C# 使用xmlTextReader进行C XML解析
在尝试读取XML时,我做不了很多事情。我是C语言的初学者,我想以XmlTextReader为例解析以下XML 我取p1和p2,但无法到达p24和p26。我应该如何进行 这是我的XML:C# 使用xmlTextReader进行C XML解析,c#,xml,xmltextreader,C#,Xml,Xmltextreader,在尝试读取XML时,我做不了很多事情。我是C语言的初学者,我想以XmlTextReader为例解析以下XML 我取p1和p2,但无法到达p24和p26。我应该如何进行 这是我的XML: <?xml version="1.0" encoding="utf-8"?> <Products> <Books> <pb> <p1>1</p1> <p2>
<?xml version="1.0" encoding="utf-8"?>
<Products>
<Books>
<pb>
<p1>1</p1>
<p2>2</p2>
<p24>
<a>
<a1>97924</a1>
<a2>Fabio Moon</a2>
</a>
<a>
<a1>82056</a1>
<a2>Gabriel Ba</a2>
</a>
</p24>
<p26>
<ca>
<ca1>001005</ca1>
<ca2>Çocuk Kitapları</ca2>
<ca3>
<ca1>001005016</ca1>
<ca2>Roman</ca2>
</ca3>
<ca3>
<ca1>001005017</ca1>
<ca2>Öykü</ca2>
</ca3>
</ca>
</p26>
</pb>
</Books>
</Products>
问题是代码只在if条件下查找p1元素xmlTextReader.Name==p1 我修改了源代码以满足您的需要。如果还想获取文本值,则需要检查节点是否为XmlNodeType.text类型。然后,您可以使用xmlTextReader.Name获取标记名,并使用xmlTextReader.Text获取内部文本 如果您只想读取元素的子元素,那么可以使用ReadToDescendant 下面的代码应该读取整个xml并将其打印到控制台:
// read to 'pb' element and then read it's children
xmlTextReader.ReadToDescendant("pb");
while (xmlTextReader.Read())
{
switch (xmlTextReader.NodeType)
{
case XmlNodeType.XmlDeclaration:
Console.WriteLine("<?xml version='1.0' encoding='uft-8'?>");
break;
case XmlNodeType.Element:
Console.WriteLine("<{0}>", xmlTextReader.Name);
break;
case XmlNodeType.Text:
Console.WriteLine(xmlTextReader.Value);
break;
case XmlNodeType.EndElement:
Console.WriteLine("</{0}>", xmlTextReader.Name);
break;
}
}
// remember to close the reader
if (xmlTextReader != null)
xmlTextReader.Close();
// read to 'pb' element and then read it's children
xmlTextReader.ReadToDescendant("pb");
while (xmlTextReader.Read())
{
switch (xmlTextReader.NodeType)
{
case XmlNodeType.XmlDeclaration:
Console.WriteLine("<?xml version='1.0' encoding='uft-8'?>");
break;
case XmlNodeType.Element:
Console.WriteLine("<{0}>", xmlTextReader.Name);
break;
case XmlNodeType.Text:
Console.WriteLine(xmlTextReader.Value);
break;
case XmlNodeType.EndElement:
Console.WriteLine("</{0}>", xmlTextReader.Name);
break;
}
}
// remember to close the reader
if (xmlTextReader != null)
xmlTextReader.Close();