已发布网站中的根元素缺失错误

时间:2012-09-12 13:44:25

标签: c# .net xml linq-to-xml

我正在使用XDocument和XElement来读取XML。从visual studio 2012运行网站时,阅读没有问题。发布后我得到“Root element is missing”异常。

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Xml.XmlException:缺少根元素。

请查看以下XML

<CTReport>
  <ReportHeader>
    <UserID>1508ac07-0070-46b9-84f4-533b83cb3770</UserID>
  </ReportHeader>
  <ReportInfoToDisplay>
    <Report PlaceHolder="7">
      <Info Name="Average Mix report" TranslatedText="" ShowPrice="1" />
      <ReportControls>
        <ControlInfo Type="Date" Name="Date" TranslatedText="" Data="!" />
        <ControlInfo Type="Lookup" Name="Scale operator" TranslatedText="" Data="" />
        <ControlInfo Type="Lookup" Name="Display Jobs of" TranslatedText="" Data="Normal!Layaway!" />
        <ControlInfo Type="Combo" Name="SortBy" TranslatedText="SortBy" Data="Sort by mixer + product group!Sort by product group" />
      </ReportControls>
    </Report>
    <Report />
    <Report PlaceHolder="8">
      <Info Name="Mix report" TranslatedText="" ShowPrice="0" />
      <ReportControls>
        <ControlInfo Type="Date" Name="Date" TranslatedText="" Data="!" />
        <ControlInfo Type="Lookup" Name="Scale operator" TranslatedText="" Data="" />
        <ControlInfo Type="Combo" Name="SortBy" TranslatedText="SortBy" Data="Sort by mixer + product group!Sort by product group" />
      </ReportControls>
    </Report>
    <Report PlaceHolder="9">
      <Info Name="Scale report" TranslatedText="" ShowPrice="0" />
      <ReportControls>
        <ControlInfo Type="Date" Name="Date" TranslatedText="" Data="!" />
        <ControlInfo Type="String" Name="Job reference" TranslatedText="" Data="" />
        <ControlInfo Type="String" Name="Job ID" TranslatedText="" Data="" />
        <ControlInfo Type="Lookup" Name="Scale operator" TranslatedText="" Data="" />
      </ReportControls>
    </Report>
  </ReportInfoToDisplay>
</CTReport>

代码:

  XDocument xml = XDocument.Parse(reportXML);

reportXML是字符串。

请注意,从XML文件创建XDocument时没有异常

1 个答案:

答案 0 :(得分:1)

问题几乎可以肯定,您尝试解析的XML与您上面发布的XML不符。

有几种情况:

  1. 有多个CTReport元素(即您在XML中有两组报告)
  2. 根本没有CTReport(所以在最高级别,您有ReportHeaderReportInfoToDisplay
  3. 按预期有一个CTReport个元素,但是根级别还有一些其他元素。
  4. 您的文件完全是空的。
  5. 您可以做的最好的事情是在代码中添加一行,以便将reportXML的内容输出到文本文件中,这样您就可以更好地查看它并确保它是什么&#39期待。您可以通过在尝试解析XML之前添加类似于下面的行来执行此操作:

    System.IO.File.WriteAllText(@"<Put an output file path here>", reportXML);