【问题标题】:Null object reading from XML file从 XML 文件读取空对象
【发布时间】:2013-05-01 20:34:56
【问题描述】:

我正在尝试读取一个简单的 xml 文件,但遇到了一些问题。这是阅读它的代码:

    XmlDocument doc = new XmlDocument();
    doc.Load("C:/file.xsd");

    XmlNode loc = doc.SelectSingleNode("/schema/annotation/appinfo");
    XmlNodeList refNode= loc.SelectNodes("referral");

下面是 XML 的样子:

<schema>
  <annotation>
   <appinfo>
     <referral/>
     <referral/>
     <referral/>
   </appinfo>
  </annotation>
</schema>

为了便于阅读,我已对其进行了简化,但我正在尝试读取“推荐”节点。我确认正在读取该文件,但“loc”变量为空。

不胜感激,谢谢!

【问题讨论】:

  • 非简化版有命名空间吗?就像这个问题stackoverflow.com/questions/24734/…
  • 没有命名空间,节点的名称和列出的完全一样(这里只是删除了属性)
  • give doc.SelectSingleNode("schema/annotation/appinfo");试一试。 (删除前导斜杠)
  • 完整的错误是什么?它发生在你的代码哪里?
  • 补充一下 Jonesy,我注意到您引用了一个 xsd,它通常都有一个命名空间。如他引用的问题所示,添加命名空间管理器就足够了示例:w3.org/2001/XMLSchema">

标签: c# asp.net xml xmlreader


【解决方案1】:

以下代码给出了正确的结果,因此通过给定路径选择节点没有问题。我认为你必须添加正确的命名空间才能工作。

string xml = @"<schema>
                <annotation>
                <appinfo>
                    <referral/>
                    <referral/>
                    <referral/>
                </appinfo>
                </annotation>
            </schema>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);

XmlNode loc = doc.SelectSingleNode("/schema/annotation/appinfo");
XmlNodeList refNode = loc.SelectNodes("referral");

【讨论】:

    猜你喜欢
    • 2014-09-17
    • 2023-03-10
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    相关资源
    最近更新 更多