当我通过第三行“对象引用未设置为对象的实例”中的异常将xmls属性添加到我的根元素时,但是从根元素删除xmls属性后,它可以正常工作。

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("file.xml");    
MessageBox.Show(xmlDoc.SelectSingleNode("person/name").InnerText);

这是我的xmlfile

<?xml version="1.0" encoding="utf-8"?>
<person xmlns="namespace path">
<name>myname</name>
</person>

我想知道为什么在将xmlns属性添加到我的根元素后不起作用。 我是否必须使用另一种方法进行解析?

#1楼 票数:1

注意

如果XPath表达式不包含前缀,则假定名称空间URI为空名称空间。 如果XML包含默认名称空间,则仍必须向XmlNamespaceManager添加前缀和名称空间URI。 否则,您将不会选择节点。 有关更多信息,请参见使用XPath导航选择节点。

XmlNamespaceManager ns = new XmlNamespaceManager(xmldoc.NameTable);
ns.AddNamespace("something", "http://or.other.com/init");
XmlNode node = xmldoc.SelectSingleNode("something:person/name", ns);

#2楼 票数:1

您需要添加名称空间Messenger来将名称空间解析为xml文件。

考虑这个例子

XML文件

<?xml version="1.0" encoding="utf-8"?>
  <person xmlns="http://www.findpersonName.com"> // Could be any namespace
      <name>myname</name>
  </person>

并在您的代码中

         XmlDocument doc = new XmlDocument();
        doc.Load("file.xml");

        //Create an XmlNamespaceManager for resolving namespaces.
        XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
        nsmgr.AddNamespace("ab", "http://www.findpersonName.com");
        MessageBox.Show(doc.SelectSingleNode("//ab:name", nsmgr).InnerText);

#3楼 票数:0

您可能要考虑使用XDocumentLinq处理XML文档。

以下示例提供了一个粗略的示例:

XDocument xDoc = XDocument.Load("file.xml"); 
var personNames = (from x in xDoc.Descendants("person").Descendants("name") select x).FirstOrDefault();  

如何从XDocument获取XML节点

  ask by Raj translate from so

未解决问题?本站智能推荐:

1回复

在C#中使用XmlDocument强大地解析xml

我有以下代码 我正在阅读的XML是给定的标准,因此总是正确的。 有没有更好,更可靠的方法来读取值? 更新:样本Xml
2回复

C#:使用 XmlDocument 解析 XML 时的行信息

使用 XmlDocument 解析 XML 文件并在以后仍保留错误消息的行信息时,我有哪些选择? (顺便说一句,是否可以用 XML 反序列化做同样的事情?) 选项似乎包括: 扩展 DOM 并使用 IXmlLineInfo 使用 XPathDocument
2回复

XML解析错误-C#

我的代码在第7行第32位有一个XML解析错误,我不确定为什么 确切的错误转储 Xml文件,请注意,这只是一个示例,因为我希望程序在开始填充此存储库之前就可以运行 C#代码的一小部分 Messagebox.Show()只是为了确保得到正确的结果
2回复

使用XmlDocument解析XML

因此,我试图使用XmlDocument类在C#中解析XML文档。 到目前为止,我已经成功地能够从名为<map>的第一个节点加载数据。 但是后来我遇到了一个问题,我的XML文档将包含几个<tileset>标记。 因此我从逻辑上得出结论,我必须做一个循环(第一个循
2回复

使用C#XmlDocument在XML中插入RootNode

我有一个不带RootNode XML格式的字符串,如下所示: 现在,我想要的是将返回的字符串嵌入到根节点中,例如 如何使用System.Xml命名空间( XmlDocument等)完成此操作? 我有以下代码: 先感谢您。 编辑:好的,抱歉,我不清楚。 我真正
1回复

C#-使用XmlDocument的Xml操作

在C#中,如何使用XmlDocument将xml中的节点替换为另一个节点。 例如,请考虑以下xml文件。 让我们说我需要更换 有一个新节点
5回复

如何在XmlDocument C#中处理XML中的名称空间

我有几个XML文档,它们都具有相同的结构(元素名称,属性名称和层次结构)。 但是,某些元素和属性在每个XML文档中都有自定义名称空间,而这些名称空间在设计时是未知的。 他们改变了,不要问... 使用一组XPath遍历文档时如何处理? 我应该在处理之前删除所有名称空间吗?
2回复

无法使用C#和XmlDocument读取XML

我想用C#读取XML文件,但是总是出现错误。 这是我的XML 我想阅读此XML,但XMLContentNodes始终为null。 因此,我无法使用此路径获取SelectSingleNode,但是我无法找到这里应该出什么问题? 任何帮助将不胜感激。