gpt4 book ai didi

c# - NodeList.SelectSingleNode() 语法

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:26 24 4
gpt4 key购买 nike

在使 NodeList.SelectSingleNode() 正常工作时遇到问题。我的 XML 如下所示:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<inm:Results xmlns:inm="http://www.namespace.com/1.0">
<inm:Recordset setCount="18254">
<inm:Record setEntry="0">
<!-- snip -->
<inm:Image>fileName.jpg</inm:Image>
</inm:Record>
</inm:Recordset>
</inm:Results>

数据是一长串<inm:Record>条目。

我打开文档并根据“inm:Record”创建一个 NodeList 对象。这很好用。

XmlDocument xdoc = new XmlDocument();
xdoc.Load(openFileDialog1.FileName);
XmlNodeList xRecord = xdoc.GetElementsByTagName("inm:Record");

我开始使用 for 循环遍历 NodeList。在处理给定条目之前,我想检查并查看 <inm:Image> 是否已设置。我认为这将非常容易做到

string strImage = xRecord[i].SelectSingleNode("inm:Image").InnerText;

我的想法是,“对于我正在使用的 XRecord,去寻找 <inm:Image> 值......但这不起作用,因为我得到异常说我需要一个 XmlNameSpaceManager。所以,我试图设置它但永远无法获得正确的语法。

谁能告诉我如何在这种情况下使用正确的 XmlNameSpaceManager 语法。

我现在已经解决了这个问题,方法是循环遍历给定 xRecord 的所有子节点,并在循环到它时检查标签。我想先检查那个值,看看我是否需要循环那个 <inm:Record>完全没有条目。

最佳答案

无需遍历所有 Record 元素,只需使用 XPath 指定您想要的子集:

XmlDocument xdoc = new XmlDocument();
xdoc.Load(openFileDialog1.FileName);
XmlNamespaceManager manager = new XmlNamespaceManager(xdoc.NameTable);
manager.AddNamespace("inm", "http://www.inmagic.com/webpublisher/query");
XmlNodeList nodes = xdoc.SelectNodes("/inm:Results/inm:Recordset/inm:Record[inm:Image != '']", manager);

关于c# - NodeList.SelectSingleNode() 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11212509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com