Ich bin neu in XML/HTML-Parsing. Ich kenne nicht einmal die richtigen Worte, um nach Duplikaten zu suchen.Wert von HTML-Knoten lesen
Ich habe diese HTML-Datei, die wie folgt aussieht:
<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>
Jetzt brauche ich 00:00:00
, 00:00:29
und I'm great!
von ihm. Ich könnte es wie folgt lesen:
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;
}
}
I-Werte in Variablen erhalten a
, b
und c
. Aber es gab eine kleine Änderung im HTML-Format. Nun ist die HTML sieht wie folgt aus:
<body id="s1" style="s1">
<div xml:lang="uk">
<p begin="00:00:00" end="00:00:29">I'm great! </p>
In diesem Szenario wie kann ich 00:00:00
parsen, 00:00:29
und I'm great!
? Ich versuchte dies:
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;
}
Aber ich bekomme diese Fehlermeldung: This document already has a 'DocumentElement' node.
in Zeile doc.Load(reader)
. Wie kann ich richtig lesen und was verursacht den Ärger? Ich verwende .NET 2.0
Werfen Sie einen Blick auf [HTML-Agility-Pack] (https://htmlagilypack.codeplex.com/), scheint wie, was Sie brauchen, um HTML zu analysieren. – oleksii
HTML! = XML .... –
@oleksii sollte ich wirklich Libre von Drittanbietern verwenden, wenn es viel unter System.Xml gibt? Außerdem mache ich nichts, was mit html zusammenhängt. – nawfal