C# 检查XML的预期结构
我正在调用一个函数,该函数返回一个包含XML数据的字符串。此函数的工作方式并不重要,但根据函数的成功与否,生成的xml可能会有所不同 基本上,该函数将返回expect XML或错误格式的XML。下面是两个结果的基本示例 关于成功:C# 检查XML的预期结构,c#,xml,validation,C#,Xml,Validation,我正在调用一个函数,该函数返回一个包含XML数据的字符串。此函数的工作方式并不重要,但根据函数的成功与否,生成的xml可能会有所不同 基本上,该函数将返回expect XML或错误格式的XML。下面是两个结果的基本示例 关于成功: <SpecificResult> <Something>data</Something> </SpecificResult> 所以问题是,实现iError函数的最佳方法是什么 我想了几个选择,但不确定我是否真的
<SpecificResult>
<Something>data</Something>
</SpecificResult>
所以问题是,实现iError函数的最佳方法是什么
我想了几个选择,但不确定我是否真的喜欢其中任何一个
“”
GetXml()
方法本质上是返回非类型化数据,这里唯一安全的假设是它的结构是XML,因此断言其实际类型的最安全方法是将其解析为XML:
private bool IsError(string xml)
{
var document = XDocument.Parse(xml);
return document.Element("ErrorResult") != null;
}
谢谢,我觉得这个很结实。只是为了确保文档中没有明确的msdn,一次失败的
解析
尝试仍然会返回一个XDocument(尽管是空的)正确吗。。。另外,等待接受的答案,将等待其他人是否有任何意见;)实际上会的。但是,在这种情况下,这听起来像是一种真正的异常情况,因此您可能不希望在IsError(string)
方法中处理这种情况,而是允许异常在调用链中进一步传播。
string xml = GetXML();
if(!IsError(xml))
{
//convert to known type and process
}
private bool IsError(string xml)
{
var document = XDocument.Parse(xml);
return document.Element("ErrorResult") != null;
}