c# - 不使用 try/catch 检查格式正确的 XML?

标签 c# xml well-formed

有谁知道如何在 try/catch block 中不使用 XmlDocument.LoadXml() 之类的东西来检查字符串是否包含格式正确的 XML?我得到的输入可能是 XML,也可能不是 XML,我希望代码能够识别输入可能不是 XML 而不依赖于 try/catch,以提高速度和一般原则,即非特殊情况不应引发异常(exception)。我目前有执行此操作的代码;

private bool IsValidXML(string value)
    {
        try
        {
            // Check we actually have a value
            if (string.IsNullOrEmpty(value) == false)
            {
                // Try to load the value into a document
                XmlDocument xmlDoc = new XmlDocument();

                xmlDoc.LoadXml(value);

                // If we managed with no exception then this is valid XML!
                return true;
            }
            else
            {
                // A blank value is not valid xml
                return false;
            }
        }
        catch (System.Xml.XmlException)
        {
            return false;
        }
    }

但它似乎不需要 try/catch。这个异常在调试过程中造成了快乐的 hell ,因为每次我检查一个字符串时,调试器都会在这里中断,“帮助”我解决我讨厌的问题。

最佳答案

我不知道没有异常的验证方法,但您可以将调试器设置更改为仅在 XmlException 未处理时中断 - 这应该可以解决您的直接问题,即使代码仍然不优雅。

为此,转到调试/异常.../公共(public)语言运行时异常并找到 System.Xml.XmlException,然后确保只勾选“用户未处理”(而不是抛出)。

关于c# - 不使用 try/catch 检查格式正确的 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1026247/

相关文章:

c# - ASP.NET MVC RSS 提要日期时间格式

javascript - 如何将 XSL 属性值传递到 HTML5 数据标记中?

java - XPTY0004 : Required item type of first operand of '>' is numeric; supplied value has item type xs:string

Python 写入 xml 文件

java - 迭代引用对象列表

c# - 如何使用 EntityFramework 核心包含 Collection 中的属性

c# - 实现接口(interface)但返回返回类型的子类?

c# - Rx 和异步 nunit 测试

从 HTTP 输入流构建时 Javax xml 解析器卡住