根元素缺少 XML

本文关键字:XML 元素 | 更新日期: 2023-09-27 17:56:19

我收到此代码缺少异常的根元素。代码正在尝试再次读取相同的 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

我怀疑您会收到相同的错误,但您可以更好地隔离并确定它是由 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();
 }  

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

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 文件。