【问题标题】:XmlDocument - ParentNode and DocumentType are nullXmlDocument - ParentNode 和 DocumentType 为空
【发布时间】:2009-02-11 04:16:46
【问题描述】:

在 .NET 中,如果您将 LoadXml() 加载到 XmlDocument 对象中,然后 ParentNode 和 DocumentType 为空,这意味着什么?

另外,我得到这个作为 xmldoc.FirstChild.Value 的答案:
version="1.0" encoding="utf-8"

这是对的吗?我已经有一段时间没有做过任何 XML DOM 的东西了。 该文件采用 UTF-8 编码。认为这应该不是问题。 我的文档有简单的真/假验证方法吗?

更新:
如果 NodeType 是 Element 你如何返回“标签名称”?

目前的想法:
xmldoc.ChildNodes[1].Name;

我注意到 Name 属性是 Get only。如果您想将根标记换成其他东西(例如“提要”到“容器”),但想要比 XSLT 更轻量级的东西,而不是简单的文本/替换,那么最好使用什么工具。 仍然希望看到一个 LINQ to XML 示例。感谢大家的帮助。自从我查看 .NET 中的 XML 内容以来,我猜它比我想象的要长。

【问题讨论】:

  • 您能粘贴 XML 文档的前几行吗?从文件中的第一个字符开始(请复制/粘贴,不要重新输入)
  • 你有能力使用Linq to XML吗? (即您运行的是 .NET 3.0 或更高版本)
  • 我可以使用 Linq to XML 作为测试。将在生产中为 2.0。没有使用过 Linq to XML,所以我需要帮助。
  • Sean,我使用的 XML 是您在 search.twitter.com 上搜索后可以订阅的 ATOM 提要。作为测试,您可以使用search.twitter.com/search.atom?q=test

标签: .net xmldocument system.xml


【解决方案1】:

从 MSDN 文档中,XmlDocument.ParentNode 始终返回 null - 文档本身是根,因此它没有父级。 DocumentType 属性返回您的示例没有的 DOCTYPE 标记。

【讨论】:

    【解决方案2】:

    始终可以通过 XmlDocument.DocumentElement 属性访问根元素。 根元素的名称可以使用 XmlDocument.DocumentElement.LocalName 字符串属性来确定。

    如果要重命名根元素,最好使用另一个 XmlDocument 实例,使用 XmlDocument.CreateNode 添加根元素,随意命名,然后 循环原始文档根元素的子元素并使用 CloneNode (bool deep) 方法,结合 XmlNode.ImportNode 方法将原始文档的其余部分复制到新文档中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-13
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-06
      • 1970-01-01
      相关资源
      最近更新 更多