【问题标题】:Root element missing XML缺少 XML 的根元素
【发布时间】:2014-04-02 18:22:55
【问题描述】:

我收到此代码的根元素缺失异常。该代码正在尝试再次读取相同的 xml 文件。这个位置大约有 150 个 xml 文件。有人可以帮忙吗?

            foreach (string file in Directory.EnumerateFiles("C:\\Path\\", "*.xml"))
             {
                 string FileName = Path.GetFileNameWithoutExtension(file);

                 XPathDocument myXPathDoc = new XPathDocument(file);

                 XslCompiledTransform myXslTrans = new XslCompiledTransform();
                 /* loading XSLT */



                 myXslTrans.Load("ABCXSLT.xsl");
                 /* creating Output Stream */
                 XmlTextWriter myWriter = new XmlTextWriter(FileName + "_cleaned.xml", null);
                 /* XML transformation */
                 myXslTrans.Transform(myXPathDoc, null, myWriter);

                 myWriter.Close();

             }

【问题讨论】:

  • 您真的需要为每个 xml 文件重新加载 .xsl 文件吗?也许问题出在 xsl 文件中,因为它在循环的每次迭代中都会重新加载。
  • 你能发布 XML 吗?
  • 哪个statemenr给出了这个错误?
  • 感谢你们的 cmets 伙计们!我从@deanosaur 那里得到了答案!

标签: c# asp.net xml xslt xsd


【解决方案1】:

我怀疑你会得到同样的错误,但你可以更好地隔离并确定它是由 xslt 还是 xml 文件引起的。

将 xslt 的加载移到循环之外:

  XslCompiledTransform myXslTrans = new XslCompiledTransform();
  /* loading XSLT */
  myXslTrans.Load("ABCXSLT.xsl");

然后执行你的循环:

 foreach (string file in Directory.EnumerateFiles(@"C:\Path\", "*.xml")) {
    string FileName = Path.GetFileNameWithoutExtension(file);
    XPathDocument myXPathDoc = new XPathDocument(file);

    /* creating Output Stream */
    XmlTextWriter myWriter = new XmlTextWriter(FileName + "_cleaned.xml", null);

    /* XML transformation */
    myXslTrans.Transform(myXPathDoc, null, myWriter);
    myWriter.Close();
 }  

【讨论】:

    【解决方案2】:

    你为什么不试试这个,找出所有缺少根元素的文件:

    foreach (string file in Directory.EnumerateFiles(path, "*.xml"))
    {
        try { XElement.Load(file); }
        catch
        {
            string name = Path.GetFileName(file);
            Console.WriteLine(name + " is missing a root element");
        }
    }
    

    如果没有捕获到,那么是您的代码错误地处理了 xml 文件。

    【讨论】:

      猜你喜欢
      • 2012-04-24
      • 2016-05-10
      • 2012-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 2020-10-18
      相关资源
      最近更新 更多