XmlNodeList(为什么这是空的)
我不明白为什么这个 NodeList 是空的,
XmlDocument document = new XmlDocument();
document.Load(xmlpath);
XmlNodeList nodes = document.SelectNodes("/StructureResponse/rootItem/attributes/Attribute");
这里的 XmlFile
<?xml version="1.0" encoding="utf-8"?>
<StructureResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://nts-de-osm1-pxc/webservices/">
<consolidatedItems xsi:nil="true" xmlns="http://systinet.com/wsdl/com/osm/webservices/service/" />
<rootItem xsi:type="Part" xmlns="http://systinet.com/wsdl/com/osm/webservices/service/">
<attributes>
<Attribute>
<dataDictionary xsi:nil="true" />
<dataType>string</dataType>
<displayName>IDENT_NR</displayName>
<key>true</key><name>IDENT_NR</name>
<searchable>true</searchable>
<userAttribute>true</userAttribute>
<value>9662744</value>
</Attribute>
<Attribute>
<dataDictionary xsi:nil="true" />
<dataType>string</dataType>
<displayName>AI</displayName>
<key>true</key><name>AI</name>
<searchable>true</searchable>
<userAttribute>true</userAttribute>
<value>00</value>
</Attribute>
</rootItem>
</StructureResponse>
在最终脚本中我想获取一个包含其中每个属性的数组字符串。
谢谢 斯特凡
I can't understand why this NodeList is Empty
XmlDocument document = new XmlDocument();
document.Load(xmlpath);
XmlNodeList nodes = document.SelectNodes("/StructureResponse/rootItem/attributes/Attribute");
Here the XmlFile
<?xml version="1.0" encoding="utf-8"?>
<StructureResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://nts-de-osm1-pxc/webservices/">
<consolidatedItems xsi:nil="true" xmlns="http://systinet.com/wsdl/com/osm/webservices/service/" />
<rootItem xsi:type="Part" xmlns="http://systinet.com/wsdl/com/osm/webservices/service/">
<attributes>
<Attribute>
<dataDictionary xsi:nil="true" />
<dataType>string</dataType>
<displayName>IDENT_NR</displayName>
<key>true</key><name>IDENT_NR</name>
<searchable>true</searchable>
<userAttribute>true</userAttribute>
<value>9662744</value>
</Attribute>
<Attribute>
<dataDictionary xsi:nil="true" />
<dataType>string</dataType>
<displayName>AI</displayName>
<key>true</key><name>AI</name>
<searchable>true</searchable>
<userAttribute>true</userAttribute>
<value>00</value>
</Attribute>
</rootItem>
</StructureResponse>
In the Final Script I want to get an array string which contains every Attribute in it.
Thank you
Stefan
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您没有考虑文档中的 XML 命名空间 (
xmlns="http://nts-de-osm1-pxc/webservices/"
)!好的,您甚至有两个单独的名称空间 - 更新了我的示例。
试试这个:
马克
You're not taking into account the XML namespace (
xmlns="http://nts-de-osm1-pxc/webservices/"
) on the document!OK, you even have two separate namespaces - updated my sample.
Try this:
Marc
用户marc_s的回答实际上是正确的。您需要注意 XML 命名空间。但是,他的代码示例不能直接用于您的示例。这是一个与您提供的 XML 一起使用的完整示例(尽管我必须清理它......它缺少
attributes
的结束标记)。我建议对 XML 名称空间进行更多研究。尝试略读 Ronald Bourret 的“XML 命名空间常见问题解答”。
User marc_s's answer is actually correct. You need to pay attention to the XML namespaces. His code sample, however, will not work directly for your example. Here is a full sample that works with the XML you gave (although I had to clean it up... it was missing a closing tag for
attributes
).I suggest doing a bit more studying of XML namespaces. Try skimming Ronald Bourret's "XML Namespaces FAQ".
尝试:
XmlNodeList 节点 = document.SelectNodes("./StructureResponse/rootItem/attributes");
Try:
XmlNodeList nodes = document.SelectNodes("./StructureResponse/rootItem/attributes");