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