我是新手,对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;
}
但是我遇到了这个错误:该文档已经有了一个'DocumentElement'节点。
在doc.Load(reader)
的代码行上。如何正确读取并导致问题的原因是什么?我正在使用.NET 2.0