代码之家  ›  专栏  ›  技术社区  ›  Sergio

xmldocument.load与xmldocument.loadxml

  •  19
  • Sergio  · 技术社区  · 14 年前

    我刚遇到一个问题 XmlDocument.LoadXml .

    应用程序崩溃,出现以下错误:

    “根级别的数据无效。第1行,位置1“

    在检查了XML并发现它没有任何问题之后,我在谷歌上搜索了一下,找到了一个要使用的提示 XmlDocument.Load 而不是 XML文档.loadXML .

    我试过了,效果很好。

    我的问题是:这两种方法有什么区别,是什么导致一种方法工作,另一种方法失败?

    5 回复  |  直到 8 年前
        1
  •  34
  •   sergtk    10 年前

    XmlDocument.Load 用于从流、textReader、path/url或xmlreader加载XML。 XmlDocument.LoadXml 用于加载字符串中包含的XML。

    它们是加载XML的根本不同的方法,具体取决于XML实际存储的位置。因此,听起来您对XML的位置使用了错误的方法。

        2
  •  24
  •   Jon Skeet    14 年前

    你想用吗 XmlDocument.LoadXml 把文件的名字传进来?它不这样做-它假定您传入的字符串 XML。所以你可以使用:

    doc.LoadXml("<root><child /><root>");
    

    doc.Load("myfile.xml");
    

    如果这不起作用,您能展示一下您的失败代码和工作代码吗?你可以通过不同的方式改变使用 LoadXml Load

        3
  •  3
  •   Community Egal    7 年前

    假设你的使用 XmlDocument.Load XmlDocument.LoadXml 正确的 这个问题可能是由 Byte Order Mark .

    这个 other question 可能有用。

        4
  •  2
  •   anonymous coward    14 年前

    Load()从某个源加载,而LoadXML()直接从字符串加载

        5
  •  0
  •   takrl Ganesan SubbiahPandian    13 年前

    应用程序崩溃,出现以下错误:“根级别的数据无效。第1行,位置1“ 我怀疑XML数据没有根级别: 例如:

    <area id="1">
      <candidate id="0">dataata</candidate>
    </area>
    <area id="2">
      <candidate id="0">dataataa</candidate>
    </area>
    

    您需要在底层的顶部至少有一个根级别。 例如:

    <areas>
      <area id="1">
        <candidate id="0">dataata</candidate>
      </area>
      <area id="2">
        <candidate id="0">dataataa</candidate>
      </area>
    </areas>
    

    所以请把一个母亲放在你的水平之上,让它成为所有孩子的祖母。