确定给定字符串是否为XML
本文关键字:XML 是否 字符串 | 更新日期: 2023-09-27 18:21:29
我使用的是API,如果成功则返回XML,如果失败则返回错误字符串。我想找到一种健壮的方法来确定字符串是XML还是仅仅是字符串。在我尝试自己做之前,我想知道框架中是否已经存在一些东西。
如果抛出异常不是xml ,请尝试解析
string unknow = "";
try
{
return XElement.Parse(unknow);
}
catch (System.Xml.XmlException)
{
return null;
}
XDocument
尝试解析输入。如果解析成功,则输入是有效的XML;否则,它就不是一个有效的XML。
Boolean ValidateXml(string xmlString) {
try {
return XDocument.Load(new StringReader(xmlString)) != null;
} catch {
return false;
}
}
这是一种比较昂贵的验证XML的方法。如果以后打算使用解析后的XML,我会将其更改为TryParse
,并使用如下输出:
Boolean TryParseXml(string xmlString, out XDocument res) {
try {
res = XDocument.Load(new StringReader(xmlString));
return true;
} catch {
res = null;
return false;
}
}
以下是我如何称呼这种方法:
XDocument doc;
if (TryParseXml(response, out doc)) {
// Use doc here
} else {
// Process the error message
}
一种稳健但缓慢的方法是解析出结果(XElement.Parse()
),看看它是否引发异常。
public bool IsValidXml(string candidate)
{
try{
XElement.Parse(candidate);
} catch(XmlException) {return false;}
return true;
}
一种不太健壮但更快速的方法是检查一些基本假设,比如字符串(在修剪空白之后)是否以<>
标记开始和结束。