C# XmlDocument 如何获取指向根元素的指针并遍历子元素
C# XmlDocument how to get pointer to root element and iterate over children
在 XML 文档中:
Foo.xml
<products>
<product>
<id>1</id>
<name>Foo</name>
</product>
<product>
<id>2</id>
<name>Bar</name>
</product>
</products>
如何获取这个根元素,遍历他的子元素并获取它们的属性?
Bar.cs
XmlDocument doc = new XmlDocument();
doc.Load(path + "/foo.xml");
XmlNode mainNode = doc.DocumentElement.SelectSingleNode("products");
XmlNode root = mainNode.FirstChild; //null
foreach (XmlNode node in mainNode)
{
int id = Convert.ToInt32(node["id"].InnerText);
string name = node["name"].InnerText);
list.Items.Add(id);
list.Items.Add(name);
}
此代码暗示 mainNode 为空。这样做的最佳做法是什么?
DocumentElement
是XML的最外层元素,即<products>
元素。您不能在其下方 select 另一个 <products>
元素。
你能做什么:
XmlNode mainNode = doc.SelectSingleNode("products");
或
XmlNode mainNode = doc.DocumentElement;
或
XmlNode mainNode = doc.DocumentElement.SelectSingleNode("//products");
第二个可能是最快的,因为它不需要解析和处理查询。最后一个有点矫枉过正,出于代码简洁的原因(KISS 原则)应该避免。
在 XML 文档中:
Foo.xml
<products>
<product>
<id>1</id>
<name>Foo</name>
</product>
<product>
<id>2</id>
<name>Bar</name>
</product>
</products>
如何获取这个根元素,遍历他的子元素并获取它们的属性?
Bar.cs
XmlDocument doc = new XmlDocument();
doc.Load(path + "/foo.xml");
XmlNode mainNode = doc.DocumentElement.SelectSingleNode("products");
XmlNode root = mainNode.FirstChild; //null
foreach (XmlNode node in mainNode)
{
int id = Convert.ToInt32(node["id"].InnerText);
string name = node["name"].InnerText);
list.Items.Add(id);
list.Items.Add(name);
}
此代码暗示 mainNode 为空。这样做的最佳做法是什么?
DocumentElement
是XML的最外层元素,即<products>
元素。您不能在其下方 select 另一个 <products>
元素。
你能做什么:
XmlNode mainNode = doc.SelectSingleNode("products");
或
XmlNode mainNode = doc.DocumentElement;
或
XmlNode mainNode = doc.DocumentElement.SelectSingleNode("//products");
第二个可能是最快的,因为它不需要解析和处理查询。最后一个有点矫枉过正,出于代码简洁的原因(KISS 原则)应该避免。