求XmlNode.SelectNodes方法的用法,我找不到所要的节点列表

来源:百度知道 编辑:UC知道 时间:2024/06/22 02:57:06
这是一个Xml文档:
<?xml version="1.0"?>
<process-definition name="websale" xmlns="urn:jbpm.org:jpdl-3.2">

<!-- SWIMLANES (= process roles) -->
<swimlane name="buyer" />
<swimlane name="salesman">
<assignment actor-id="manager" />
</swimlane>
<swimlane name="accountant">
<assignment actor-id="shipper" />
</swimlane>
<swimlane name="shipper">
<assignment actor-id="admin" />
</swimlane>
......

XmlDocument doc = new XmlDocument();
doc.Load("process-idenfinition");
XmlNode root = doc.DocumentElement;
XmlNodeList swimlaneList = root.SelectNodes("swimlane");
结果返回空列表,应该有4个节点才对。
"//swimlane"或者"descendant::swimlane"都试了,不行。我之前在网上找过,行不通。
sw

//swimlane

回答补充:
这样写绝对没问题,同三楼建议你看看xpath,我想是不是你的xml定义的有问题还是什么,可以的话建议你把完整的xml列出来

回答再补充:
那就奇怪了,这个表达式绝对绝对没有问题的,你介意不介意把程序拿给我看看

因为你的xml文档有一个命名空间,所以你需要这样写
XmlNamespaceManager xmlNamespaceManager = new XmlNamespaceManager(xmlDocument.NameTable);
xmlNamespaceManager.AddNamespace("ss","urn:jbpm.org:jpdl-3.2");
XmlNodeList xmlNodelist = rootNode.SelectNodes("/ss:process-definition/ss:swimlane", xmlNamespaceManager);
这样xmlNodeList里就有4个了。

XmlNodeList swimlaneList = doc.GetElementsByTagName("swimlane");

//swimlane或者descendant::swimlane,建议你看看xpath

XmlNodeList MyNodeList = doc.ChildNodes;

因为使用了 xmlns