【问题标题】:How to check for empty xml files when parsing through multiple xml files [duplicate]解析多个xml文件时如何检查空xml文件[重复]
【发布时间】:2017-12-21 15:52:49
【问题描述】:

我正在尝试遍历目录以搜索所有 xml 文件。我通过执行Directory.EnumerateFiles 并找到每个 .xml 类型来完成此任务。现在的问题是,有一些随机的 xml 文件是空的,其中没有写入任何信息。我想检查所有没有任何信息的文件。

代码

foreach (string file in Directory.EnumerateFiles("/xmlFiles", "*.xml", SearchOption.AllDirectories))
{
    //Find the XML File
    XDocument doc = XDocument.Load(file);

    //Check if the XDocument doc has no root element 
    if (doc == null)
    {
        Console.WriteLine(File + " has NO root element");
    }
    else
    {
        Console.WriteLine(File + " has a root element");
    }
}

我尝试在解析 xml 文件后执行 if else 语句将文件与 null 进行比较,但在加载文件时出现错误,然后才能进行比较。

错误: System.Xml.XmlException: '缺少根元素。'

【问题讨论】:

    标签: c# .net xml exception-handling


    【解决方案1】:

    总是可以尝试捕获以查看它是否为空。重复问题How to check if xml file is empty or not using c#

       try
    {
        XmlDocument doc = new XmlDocument();
        doc.Load("some.xml");
    }
    catch (XmlException exc)
    {
        //invalid file
    }
    

    【讨论】:

    • 所以我得到了 try catch 函数,但是一旦发现错误它就会结束我的脚本。我将如何修改 try catch 函数,它仍然会继续脚本并在文件为空时给我一个控制台行错误?
    • 我想这归结为你试图摆脱它。如果您只是想跳过文件,您可以像这样的方法一样,如果它是正确的,则返回加载的 xml 文档,如果出现异常,则返回 null。 @carlosE。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    相关资源
    最近更新 更多