C# 如何选择具有名称空间的XML节点
我需要获取第二个C# 如何选择具有名称空间的XML节点,c#,xml,xpath,xmldocument,C#,Xml,Xpath,Xmldocument,我需要获取第二个节点下的节点列表。如果使用以下XML源代码和C代码,FolderNode将设置为正确的节点(第二个节点),但ItemsList将设置为文件中每个的集合,包括第一个文件夹节点中的项目。因此,ItemsList包含5项而不是3项 XML来源: <?xml version="1.0" encoding="UTF-8"?> <MMM xmlns="http://some.url.com/2.0"> <Document> <
节点下的
节点列表。如果使用以下XML源代码和C代码,FolderNode将设置为正确的节点(第二个
节点),但ItemsList将设置为文件中每个
的集合,包括第一个文件夹节点中的项目。因此,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>
您只需添加一个前导的
,以指示XPath相对于当前的FolderNode
:
var ItemsList=FolderNode.SelectNodes(“.//abc:Item”,nsmgr);
//^注意这个点
由于
节点是
节点的直接子节点,因此也可以这样做:
var ItemsList=FolderNode.SelectNodes(“abc:Item”,nsmgr);
//开头没有符号,这。。
//^.. 将仅返回直接子节点
或者这样:
var ItemsList=FolderNode.SelectNodes(“./abc:Item”,nsmgr);
//^使用也返回..的单斜杠。。
//.. 仅直接子节点