c# – 为什么SelectSingleNode返回null?
发布时间:2020-12-15 08:31:28 所属栏目:百科 来源:网络整理
导读:我正在使用包含类似于此的结构的 XML文档: MT Events event id="1" field name="blah" value="a_value" type="atype" / . . . /event /Events /MT 我目前正以这种方式将文件从文件加载到XML文档中: XmlDocument xdoc = new XmlDocument();xdoc.Load("somef
我正在使用包含类似于此的结构的
XML文档:
<MT> <Events> <event id="1"> <field name="blah" value="a_value" type="atype" /> . . . </event> </Events> </MT> 我目前正以这种方式将文件从文件加载到XML文档中: XmlDocument xdoc = new XmlDocument(); xdoc.Load("somefile.xml"); //Successfully loads btw 但是,当我尝试运行下一行代码时,我遇到了一个问题,只有这个特定的文档: xdoc.SelectSingleNode("//event[@id='1']"); //This returns a null 我是否在正确的轨道上猜测这是因为使用名为’id’的属性的问题或者我在代码中遗漏了某些内容而返回null? 解决方法
我不能使用XML文件复制它
<MT> <Events> <event id="1"> <field name="blah" value="a_value" type="atype" /> </event> </Events> </MT> 和代码 XmlDocument doc = new XmlDocument(); doc.Load(@"C:test.xml"); XmlNode node = doc.SelectSingleNode("//event[@id='1']"); 这将按预期返回非null节点. 更新 在向< MT>添加xmlns =“example.org”之后我必须为XPath配置命名空间管理器并使用命名空间来处理事件.由于某种原因无法使默认命名空间生效. XmlDocument doc = new XmlDocument(); doc.Load(@"D:test.xml"); XmlNamespaceManager manager = new XmlNamespaceManager(doc.NameTable); manager.AddNamespace("e","http://example.org"); XmlNode node = doc.SelectSingleNode("//e:event[@id='1']",manager); 试图让它发挥作用时,有一件事让我很困惑.为什么XmlNamespaceManager需要文档中的XmlNameTable,如果不是为了找出它包含的命名空间?在,为什么我需要定义NameTable和命名空间?如果有人知道可以发表评论,我会很感激. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |