Jestem nowicjuszem w XML/HTML-parsowaniu. Nie znasz nawet właściwych słów, aby przeprowadzić odpowiednie wyszukiwanie duplikatów.Odczytywanie wartości z węzła HTML
mam ten plik HTML, który wygląda tak:
<body id="s1" style="s1">
<div xml:lang="uk">
<p begin="00:00:00" end="00:00:29">
<span fontFamily="SchoolHouse Cursive B" fontSize="18">I'm great!</span>
</p>
teraz muszę 00:00:00
, 00:00:29
i I'm great!
z niego. Mógłbym go odczytać tak:
XmlTextReader reader = new XmlTextReader(file);
while (reader.Read())
{
if (reader.NodeType != XmlNodeType.Element)
continue;
if (reader.LocalName != "p")
continue;
var a = reader.GetAttribute(0);
var b = reader.GetAttribute(1);
if (reader.LocalName == "span")
{
XmlDocument doc = new XmlDocument();
doc.Load(reader);
XmlNode elem = doc.DocumentElement.FirstChild;
var c = elem.InnerText;
}
}
uzyskać wartości w zmiennych a
, b
i c
. Ale nastąpiła niewielka zmiana w formacie HTML. Teraz wygląda HTML tak:
<body id="s1" style="s1">
<div xml:lang="uk">
<p begin="00:00:00" end="00:00:29">I'm great! </p>
w tym scenariuszu jaki sposób analizowania out 00:00:00
, 00:00:29
i I'm great!
? Próbowałem to:
XmlTextReader reader = new XmlTextReader(file);
while (reader.Read())
{
if (reader.NodeType != XmlNodeType.Element)
continue;
if (reader.LocalName != "p")
continue;
var a = reader.GetAttribute(0);
var b = reader.GetAttribute(1);
XmlDocument doc = new XmlDocument();
doc.Load(reader);
XmlNode elem = doc.DocumentElement.FirstChild;
var c = elem.InnerText;
}
Ale otrzymuję ten błąd: This document already has a 'DocumentElement' node.
na linii doc.Load(reader)
. Jak poprawnie czytać i co powoduje problem? Używam .NET 2.0
Spójrz na [pakiet agresji html] (https://htmlagilitypack.codeplex.com/), wygląda na to, co musisz przetworzyć html. – oleksii
HTML! = XML .... –
@oleksii powinienem naprawdę używać biblioteki stron trzecich, gdy jest dużo w System.Xml? Co więcej nie robię nic związanego z html – nawfal