XMLDocument Class - 子节点 - 缩略加载与完全加载
XMLDocument Class - Child Nodes - Abbreviated Load versus Full Load
我正在浏览 XML文档 Class
https://msdn.microsoft.com/en-us/library/system.xml.xmldocument(v=vs.110).aspx
我正在使用上述网站输入示例。我输入示例以获取子节点并且它有效。我的问题是为什么当我使用包含以下内容的完整 XML 文档时它不起作用
沿着不止一本书添加。当我将它与完整的 XML 文档一起使用时,需要修改代码以使其工作吗?
XmlDocument doc = new XmlDocument();
doc.LoadXml("<book ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"<price>19.95</price>" +
"</book>");
XmlNode root = doc.FirstChild;
//Display the contents of the child nodes.
if (root.HasChildNodes)
{
for (int i=0; i<root.ChildNodes.Count; i++)
{
Console.WriteLine(root.ChildNodes[i].InnerText);
}
}
我正在使用的完整 XML 负载如下。它是从
https://msdn.microsoft.com/en-us/library/system.xml.xmldocument(v=vs.110).aspx
doc.LoadXml("<?xml version=\"1.0\"?> \n" +
"<books xmlns=\"http://www.contoso.com/books\"> \n" +
"<book genre=\"novel\" ISBN=\"1-861001-57-8\"publicationdate=\"1823-01-
28\">\n"+
" <title>Pride And Prejudice</title> \n" +
" <price>24.95</price> \n" +
" </book> \n" +
"<book genre=\"novel\" ISBN=\"1-861002-30-1\"ublicationdate=\"1985-01-
01\">\n" +
" <title>The Handmaid's Tale</title> \n" +
" <price>29.95</price> \n" +
" </book> \n" +
"</books>");
由于第一个节点是<?xml version="1.0"?>
,书不在doc.FirstChild
而是在doc.DocumentElement;
XmlNode root = doc.DocumentElement;
在您的示例 xml 中,文档的根节点是 book
,子节点是 title
和 price
。但是如果你想要多个 books
每个子节点是一个 book
,而不是 title
或 price
,那么你需要通过名称访问这些节点或迭代以获得下一级。
foreach(XmlNode book in root)
{
Console.WriteLine("Title: {0}\r\nPrice: {1}",
book["title"].InnerText,
book["price"].InnerText);
}
或者:
foreach (XmlNode book in root)
{
foreach (XmlNode attribute in book)
{
Console.WriteLine(attribute.InnerText);
}
}
我正在浏览 XML文档 Class
https://msdn.microsoft.com/en-us/library/system.xml.xmldocument(v=vs.110).aspx
我正在使用上述网站输入示例。我输入示例以获取子节点并且它有效。我的问题是为什么当我使用包含以下内容的完整 XML 文档时它不起作用 沿着不止一本书添加。当我将它与完整的 XML 文档一起使用时,需要修改代码以使其工作吗?
XmlDocument doc = new XmlDocument();
doc.LoadXml("<book ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"<price>19.95</price>" +
"</book>");
XmlNode root = doc.FirstChild;
//Display the contents of the child nodes.
if (root.HasChildNodes)
{
for (int i=0; i<root.ChildNodes.Count; i++)
{
Console.WriteLine(root.ChildNodes[i].InnerText);
}
}
我正在使用的完整 XML 负载如下。它是从 https://msdn.microsoft.com/en-us/library/system.xml.xmldocument(v=vs.110).aspx
doc.LoadXml("<?xml version=\"1.0\"?> \n" +
"<books xmlns=\"http://www.contoso.com/books\"> \n" +
"<book genre=\"novel\" ISBN=\"1-861001-57-8\"publicationdate=\"1823-01-
28\">\n"+
" <title>Pride And Prejudice</title> \n" +
" <price>24.95</price> \n" +
" </book> \n" +
"<book genre=\"novel\" ISBN=\"1-861002-30-1\"ublicationdate=\"1985-01-
01\">\n" +
" <title>The Handmaid's Tale</title> \n" +
" <price>29.95</price> \n" +
" </book> \n" +
"</books>");
由于第一个节点是<?xml version="1.0"?>
,书不在doc.FirstChild
而是在doc.DocumentElement;
XmlNode root = doc.DocumentElement;
在您的示例 xml 中,文档的根节点是 book
,子节点是 title
和 price
。但是如果你想要多个 books
每个子节点是一个 book
,而不是 title
或 price
,那么你需要通过名称访问这些节点或迭代以获得下一级。
foreach(XmlNode book in root)
{
Console.WriteLine("Title: {0}\r\nPrice: {1}",
book["title"].InnerText,
book["price"].InnerText);
}
或者:
foreach (XmlNode book in root)
{
foreach (XmlNode attribute in book)
{
Console.WriteLine(attribute.InnerText);
}
}