如何实例化和填充xml对象

时间:2015-01-12 15:46:16

标签: c# xml

我使用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'值?例如?

1 个答案:

答案 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;