【发布时间】:2010-11-04 19:17:48
【问题描述】:
有谁知道如何检查字符串是否包含格式正确的 XML,而无需在 try/catch 块中使用 XmlDocument.LoadXml() 之类的东西?我的输入可能是 XML 也可能不是 XML,我希望代码能够识别输入可能不是 XML,而不依赖于 try/catch,无论是速度还是非异常情况不应引发的一般原则例外。我目前有执行此操作的代码;
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。该异常在调试过程中引起了快乐的地狱,因为每次我检查一个字符串时,调试器都会在这里中断,“帮助”我解决我讨厌的问题。
【问题讨论】:
-
如果调试器是您的问题,您可以关闭用户对 XmlExceptions 的处理。使用 VS 中的快捷键:Ctrl + Alt + E,找到 System.Xml.XmlException 并将其关闭。
-
令人惊讶的是,每一个答案都是尝试/捕获的答案;尽管您明确指出,但您正在寻找没有 try/catch 的解决方案。 Try/catch 不是 IF 语句;它不应成为该过程的一部分。它用于处理异常。从名字上看有点明显:)我希望你有一天能找到一个好的答案。
标签: c# xml well-formed