【发布时间】:2014-11-03 15:26:58
【问题描述】:
我需要获取第二个<Folder> 节点下的<Item> 节点列表。如果我使用以下 XML 源代码和 C# 代码,FolderNode 设置为正确的节点(第二个 <Folder> 节点),但 ItemsList 设置为文件中每个 <Item> 的集合,包括第一个文件夹节点中的项目。所以,ItemsList 包含 5 个项目而不是 3 个。
XML 来源:
<?xml version="1.0" encoding="UTF-8"?>
<MMM xmlns="http://some.url.com/2.0">
<Document>
<open>1</open>
<Folder>
<name>Folder_1_Data</name>
<Item>
<description>Folder 1 Item 1</description>
</Item>
<Item>
<description>Folder 1 Item 2</description>
</Item>
</Folder>
<Folder>
<name>Folder_2_Data</name>
<Item>
<description>Folder 2 Item A</description>
</Item>
<Item>
<description>Folder 2 Item B</description>
</Item>
<Item>
<description>Folder 2 Item C</description>
</Item>
</Folder>
</Document>
</MMM>
C#代码:
var doc = new XmlDocument();
doc.Load("Import.xml");
var nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("abc", "http://some.url.com/2.0");
var xnlNodes = doc.SelectNodes("//abc:Document", nsmgr);
var FolderNode = doc.SelectNodes("//abc:Folder", nsmgr).Item(1);
var ItemsList = FolderNode.SelectNodes("//abc:Item", nsmgr);
//Loop through each item in the 2nd folder node
//and pull out the description of each item.
【问题讨论】:
标签: c# xml xpath xmldocument