Я новичок в разборе XML/HTML -. Даже не знаю правильных слов, чтобы правильно искать дубликаты.
У меня есть HTML-файл, который выглядит так:
<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>
Теперь мне нужны 00:00:00
, 00:00:29
и I'm great!
из него. Я мог бы прочитать это так:
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;
}
}
Я получаю значения в переменных a
, b
и c
. Но было небольшое изменение в формате HTML. Теперь HTML выглядит так:
<body id="s1" style="s1">
<div xml:lang="uk">
<p begin="00:00:00" end="00:00:29">I'm great! </p>
Как в этом случае разобрать 00:00:00
, 00:00:29
и I'm great!
? Я пробовал это:
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;
}
Но я получаю эту ошибку:This document already has a 'DocumentElement' node.
в строке doc.Load(reader)
. Как правильно читать и что мешает? Я использую.NET 2.0