我正在调用一个返回包含 XML 数据的字符串的函数。此函数如何工作并不重要,但生成的 xml 可能会有所不同,具体取决于函数的成功与否。
基本上,该函数将返回预期的 XML 或错误格式的 XML。下面是两个结果可能看起来像的基本示例...
关于成功:
<SpecificResult>
<Something>data</Something>
</SpecificResult>
出错时:
<ErrorResult>
<ErrorCode>1</ErrorCode>
<ErrorMessage>An Error</ErrorMessage>
</ErrorResult>
我的系统设置方式是我可以使用简单的转换器函数将 xml 字符串转换为类,但这需要我知道类类型。成功后,我会知道它是 SpecificResult,我可以转换。但我想先检查是否发生错误。
理想的最终结果将允许类似这样的事情......
string xml = GetXML();
if(!IsError(xml))
{
//convert to known type and process
}
所以问题是,实现 IsError
的最佳方式是什么?功能?
我想到了几个选项,但不确定我是否真的喜欢其中任何一个...
- 检查xml字符串是否包含
"<ErrorResult>"
- 尝试将 xml 转换为 ErrorResult 类并检查是否失败
- 使用 XDocument 或类似的内置函数来解析树并搜索 ErrorResult 节点
最佳答案
由于 GetXml()
方法本质上返回的是未类型化 数据,因此这里唯一安全的假设是它的结构为 XML,因此最安全断言其实际类型的方法是将其解析为 XML:
private bool IsError(string xml)
{
var document = XDocument.Parse(xml);
return document.Element("ErrorResult") != null;
}
关于c# - 检查 XML 的预期结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9095452/