Pracujem na programe, ktorý prevádza text HTML na články, ktoré je možné vložiť do databázy.
Html vyzerá takto:
<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>
Viem, ako čítať atribúty vo vnútri <div>
tagy. Chcem prečítať všetky informácie medzi začiatkom a koncom značky div.
Text medzi značkami div je HTML tvorený text, ktorý chcem uložiť do svojej databázy. To znamená, že všetky značky HTML v ňom (napríklad <p>
& </p>
pozri nižšie) je potrebné prečítať.
Ako môžem prečítať celý tento text vo VB.net Momentálne používam Xdocument
& Xelement
v kombinácii s linq, ale neviem zistiť, ako to urobiť.
odpovede:
1 pre odpoveď č. 1System.Xml.XmlDocument je to celkom jednoduché, ak chcete, aby sa text vo vnútri značiek div bez použitia značky HTML použil .InnerText, t.j.
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
Ak chcete ponechať označenie, použite .InnerXml, t.j .:
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 pre odpoveď č. 2
Mal som veľa šťastia pri manipulácii s html pomocou Súbor HTML Agility Pack, Nájdete ho aj na nugete.
Jeden potenciálny problém pri používaní Xdocument
a Xelement
je to, že html nie je nevyhnutne všeobecne xml.