0

我有一个 pdf 文件,我将其转换为单独的 HTML 文件,我的目标是将它们导入 MS SQL,以便我可以在表格中搜索特定标识符并在网页上显示结果。

我能够读取所有 html 文件,并将其放入 SQL 表中,但由于它们被拆分为多个 div 容器,因此转换器正在剪切完整的句子。

<div class="S2"> DA0-17.0</div>
<div class="S5"> 1416</div>
<div class="S2"> Required when the subscriber is the same person as the patient. If</div>
<div class="S5"> 2698</div>
<div class="S2"> the subscriber is not the same person as the patient, do not use</div>
<div class="S2"> this element.</div>
<div class="S4"> CODE</div>
<div class="S4"> DEFINITION</div>
<div class="S2"> 18</div>
<div class="S2"> Self</div>

我正在尝试检索 S2 类。

我不需要类 S5 或 S4 附加的是 SQL 结果的示例,插入字符串是根据需要的字段数动态创建的。

SQL 结果

以下是创建插入值的部分:

If iFieldNum = 1 Then
    sInsertstring = sInsertstring + "id2, " + "num" + CStr(iFieldNum)
    sInsertValues = sInsertValues + "'" + msbr + "', '" + ms2 + "'"
Else
    sInsertstring = sInsertstring + ", num" + CStr(iFieldNum)
    sInsertValues = sInsertValues + ", '" + ms2 + "'"
End If
iFieldNum += 1

希望有人可以帮助我解决这个问题,或者为我指出如何解决这个问题的正确方向。可根据要求提供完整代码。谢谢你的时间,罗伯特。

Ps:这是基于应用程序,而不是网络

回复埃德珀:

Dim fFileName As String
Dim dListing As New DirectoryInfo(My.Settings.ImportDir)
Dim aFileArray As FileInfo() = dListing.GetFiles()
Dim fFiles As FileInfo
    For Each fFiles In aFileArray
    fFileName = fFiles.Name
    Dim fStream = New FileStream(My.Settings.ImportDir + "\" + fFileName, FileMode.Open)
    Dim sReader = New StreamReader(fStream)

作为对埃德珀的回复。
我想要的是以下内容:

在 HTML 文件中(大约 700 个)是具有不同类名的 div 容器。

 <div class="S2"> Required when the subscriber is the same person as the patient. If</div>
 <div class="S5"> 2698</div>
 <div class="S2"> the subscriber is not the same person as the patient, do not use</div>
 <div class="S2"> this element.</div>

我可以为每次出现创建插入语句,但是我希望<div class="S5">和之间的“描述”<div class="S4">是一长行文本,目前它被分成我不想要的 3 个部分,我不想要知道如何组合它们。
我对 VB.NET 的了解相当有限,并且我正在努力学习,我在经典 ASP 方面表现出色,但在这种情况下不起作用。

我很抱歉我的问题表述不好。
我根本不知道如何进一步解释它。

4

1 回答 1

0

您可能会Webbrowser在表单中放置一个控件,然后制作它visible = false以免显示它。然后只需为字符串生成器声明一个全局变量,例如:

Dim builder As New StringBuilder

然后,当您获得此代码中的所有 HTML 文件时,您可能会这样做:

Dim fFileName As String
Dim dListing As New DirectoryInfo(My.Settings.ImportDir)
Dim aFileArray As FileInfo() = dListing.GetFiles()
Dim fFiles As FileInfo

For Each fFiles In aFileArray
    WebBrowser1.Navigate(dListing&"\"&fFiles)
Next

当使用事件完全加载 html 时,您可以从多个类似WebBrowser1_DocumentCompleted中获取所有类(如) :S2divs

    Dim elems As HtmlElementCollection
    elems = WebBrowser1.Document.GetElementsByTagName("DIV")

    For Each elem As HtmlElement In elems

        If (elem.GetAttribute("className") = "S2") Then
            builder.Append(elem.InnerHtml).Append(" ")
        End If
    Next

    'Do something for string builder (i.e. builder.ToString()) here before clearing the String Builder like this could be where you insert the records to your table probably

    builder.Clear()
于 2013-05-23T00:24:50.367 回答