进入 XmlDocument - C# 的“底部”
本文关键字:底部 XmlDocument 进入 | 更新日期: 2023-09-27 17:57:17
我有两个版本的XmlDocument
版本 1
<?xml version="1.0" encoding="UTF-8"?>
<topElement>
<childElement1>Value</childElement1>
<childElement2>Value</childElement2>
...
</topElement>
版本 2
<?xml version="1.0" encoding="UTF-8"?>
<topElement>
<group1>
<childElement1>Value</childElement1>
<childElement2>Value</childElement2>
</group1>
<group2>
<childElement1>Value</childElement1>
<childElement2>Value</childElement2>
</group2>
</topElement>
在这两种情况下,我都需要获取所有子元素的所有值,并将它们添加到自定义对象的集合中。据我了解,这只能通过迭代来完成。
所以我得到了顶部节点,然后像这样:
CustomObject getLow(XmlNode node, CustomObject customObject)
{
foreach (XmlNode n in node.ChildNodes)
{
if (n.HasChildNodes == true)
{
getLow(n);
}
customObject.collection.Add(n.Name, n.InnerText);
}
return customObject;
}
毫无疑问这是错误的,请问有人可以帮助我在这两种情况下获得正确的结果吗?
您可以将 Xpath 与 XmlDocument 一起使用:
XmlDocument xmlDoc = new XmlDocument("yourxml.xml");
foreach (XmlNode childElement in xmlDoc.SelectNodes("//childElement"))
{
customObject.collection.Add(childElement.Name, childElement.InnerText);
}
循环
不是唯一的方法 - 另一种方法是生成具有XML属性的自定义类的对象图,并使用XMLserilizer将XML转换为对象图。
有关详细信息,请参阅 http://msdn.microsoft.com/en-gb/library/system.xml.serialization.xmlserializer.aspx。
另一种方法是使用 XDocument 并使用 linq 直接从 XDocument 中查询您想要的值。
请参阅使用 Linq 和 XDocument,我可以获取父标记下的所有子元素吗?
希望这有帮助
你应该能够使用一些xPath来获取你要找的节点。
尝试类似的东西
node.SelectNodes("//*[count(child::*)=0]")