【问题标题】:Parsing XML with namespace using DOM使用 DOM 解析带有命名空间的 XML
【发布时间】:2015-04-06 09:39:12
【问题描述】:

XML 很小,如下所示

<?xml version="1.0" encoding="UTF-8"?><userdetails xsi:schemaLocation="urn:MyNamespace loginasp.xsd" xmlns="urn:MyNamespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><username>909</username><password>madhuri1</password></userdetails>

为了解析这个 XML,我编写了以下代码。

    XmlDocument doc = new XmlDocument();
                XmlDocument xDoc = new XmlDocument();
                xDoc.LoadXml(s);//S contains above XML
 XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());
                    nsmgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
 string emp_id = xDoc.SelectSingleNode("/userdetails/username", nsmgr).InnerText;

我无法选择单个 NODExDoc.SelectSingleNode("/userdetails/username", nsmgr)null 我还需要做些什么来解析 XML 或我的 XML 错误。没有命名空间它可以正常工作

【问题讨论】:

  • 为什么-1有什么问题??
  • 以前有人回答过这个问题
  • 该链接实际上并没有回答问题,尽管它是同一个问题。这与模式无关,与更改默认命名空间有关。
  • 那个链接没有回答问题

标签: c# xml


【解决方案1】:

您需要将默认命名空间添加到 XmlNamespaceManager。

nsmgr.AddNamespace("t", "urn:MyNamespace");

然后在你的 XPath 查询中使用这个命名空间

string emp_id = xDoc.SelectSingleNode("/t:userdetails/t:username", nsmgr).InnerText;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 2012-06-09
    • 2010-09-12
    • 2014-07-28
    • 2013-05-13
    • 2021-10-24
    • 2019-03-17
    相关资源
    最近更新 更多