HTML两个<div>标签之间的所有文本vb.net </div>

时间:2014-04-22 14:53:22

标签: html vb.net linq

我正在开发一个程序,它将HTML文本转换为可以放在数据库中的文章。

html看起来像这样:

<HTML>
    <div class="article" code="article-0001" title="title">
        <p>blablabla</p>
        <p>blablablablablabblablablablablablablablabla</p>
        <p>blablablablablablablablablabla</p>
        <p></p>
        <p>blablablablablablablablablblablablablablablablablablablablablablablablablabla</p>
        <p></p>
        <p>blablablablablablablablablablablablablabla</p>
        <p></p>
    </div>
    <div class="article" code="article-0002" title="title2">
        <p>blablabla</p>
        <p>blablablablablabblablablablablablablablabla</p>
        <p>blablablablablablablablablabla</p>
        <p></p>
        <p>blablablablablablablablablblablablablablablablablablablablablablablablablabla</p>
        <p></p>
        <p>blablablablablablablablablablablablablabla</p>
        <p></p>
    </div>
</HTML>

我知道如何读出<div>标记内的属性。 我想读出div标签的开始和结束之间的所有信息。

div标签之间的文本是HTML组成的文本,我想存储在我的数据库中。这意味着必须阅读其中的所有HTML标记(例如您在下面看到的<p>&amp; </p>)。

我怎样才能在VB.net中阅读所有这些文字 目前我正在使用Xdocument&amp; Xelement结合了linq,但我无法弄清楚如何做到这一点。

2 个答案:

答案 0 :(得分:1)

System.Xml.XmlDocument使这很容易,如果你想在没有HTML标记的div标签里面的文本使用.InnerText,即

Dim doc = New System.Xml.XmlDocument()
doc.LoadXml(xml)
Dim divs = doc.FirstChild.ChildNodes
For Each div As System.Xml.XmlNode In divs
    Console.WriteLine(div.InnerText)
Next

如果要保留标记,请使用.InnerXml,即:

Dim doc = New System.Xml.XmlDocument()
doc.LoadXml(xml)
Dim divs = doc.FirstChild.ChildNodes
For Each div As System.Xml.XmlNode In divs
    Console.WriteLine(div.InnerXml.ToString())
Next

答案 1 :(得分:1)

我有幸用HTML Agility Pack操纵html。您也可以在nuget上找到它。

使用XdocumentXelement的一个潜在问题是html通常不一定是xml。