从XML中选择所有数据
本文关键字:数据 选择 XML | 更新日期: 2023-09-27 17:49:33
我有一个类似下面给出的示例的XML。我想从应用和值中选择信息,而不管NameValue Id。
<NameValueList>
<NameValue Id="LegacyB2BRCOMM">
<DSAttributeList />
<Apply>false</Apply>
<Value>False</Value>
</NameValue>
<NameValue Id="Persist">
<DSAttributeList />
<Apply>false</Apply>
<Value>False</Value>
</NameValue>
....
</NameValueList>
这取决于您使用的是哪种语言,但是您应该使用像这样的xpath表达式
//NameValue
,然后遍历所有返回的元素并访问apply和value元素。在XQuery中应该是:
for $nv in //NameValue
let $apply := $nv/Apply
let $value := $nv/Value
...
return <apply>{$apply}</apply><value>{$value}</value>
编辑:既然你的问题改成了c#,我也建议你用另一个选项。
您可以使用c#中XElement的Linq-to-XML构造来查询XML
上面的XQuery的c#版本应该是:XElement xml = XElement.Parse(xmlString); //xmlString is where your xml string goes
IEnumerable<XElement> elements = from nv in xml.Descendants("NameValue")
select new {Apply = nv.Element("Apply").Value, Value = nv.Element("Value").Value};
//Then you can iterate through
foreach(element in elements)
{
...
}
你可以这样做:
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(myXml);
XmlNode xn = xdoc.SelectSingleNode("NameValueList/NameValue[@Id='LegacyB2BRCOMM']");
string apply = xn.SelectSingleNode("Apply").InnerText;
string value = xn.SelectSingleNode("Value").InnerText;
或遍历所有:
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(myXml);
XmlNodeList xnl = xdoc.SelectNodes("NameValueList/NameValue");
foreach (XmlNode xn in xnl)
{
string id = xn.Attributes["Id"].Value;
string apply = xn.SelectSingleNode("Apply").InnerText;
string value = xn.SelectSingleNode("Value").InnerText;
}