我是 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.
在 line doc.Load(reader)
。如何正确阅读以及造成问题的原因是什么?我正在使用 .NET 2.0