我使用cmd“zypper --xmlout se -s perl-MIME-tools”查询一个repo,这样我就可以将xml格式的字符串返回到我的代码中。
我希望能够查询和使用这个xml - 如何将其转换为xml对象来执行此操作?
我的代码:
string output = queryTargetBix("zypper --xmloutput se -s perl-MIME-tools");
示例xml(包含在输出中)
<?xml version='1.0'?>
<stream>
<message type="info">Loading repository data...</message>
<message type="info">Reading installed packages...</message>
<search-result version="0.0">
<solvable-list>
<solvable status="installed" name="perl-MIME-tools" kind="package" edition="5.427-2.10.1" arch="x86_64" repository="timbus_repo_local"/>
</solvable-list>
</search-result>
</stream>
如何将这个xml存储在一个obecjt中,我可以轻松地获取'edition'值?例如?
答案 0 :(得分:2)
您可以使用XmlSerialization将您的字符串转换为一组普通的.Net对象,或者您可以使用XmlDocument类来提供查询XML文档的方法。后者更容易设置,但更难以使用。
还有Linq to XML但我从来没有使用过此功能,只能在.Net 3.5及更高版本中使用。
例如,要使用XmlDocument提取版本,您可以使用如下代码:
XmlDocument doc = new XmlDocument();
doc.LoadXml(stringWithXmlIn);
XmlNode solvableNode = doc.SelectSingleNode("stream/search-result/solvable-list/solvable");
string edition = solvableNode.Attributes["edition"].Value;