[英]Getting to “bottom” of XmlDocument - C#
我有兩個版本的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>
在這兩種情況下,我都需要獲取所有childElements的所有值,並將它們添加到CustomObject的集合中。 據我了解,這只能通過迭代來完成。
因此,我到達頂部節點,並按照以下步驟操作:
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屬性的自定義類的對象圖,並使用XML serilizer將XML轉換為對象圖。
有關詳細信息,請參見http://msdn.microsoft.com/en-gb/library/system.xml.serialization.xmlserializer.aspx 。
一種替代方法是使用XDocument並使用linq查詢要直接從XDocument中獲取的值。
請參閱使用Linq和XDocument,是否可以將所有子元素都放在父標記下?
希望這可以幫助
您應該能夠使用一些xPath來獲取所需的節點。
嘗試類似
node.SelectNodes("//*[count(child::*)=0]")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.