我想从xml获取数据,但有很多标签,字段和值键。我无法选择我想要的值。如何选择"错误"这个XML与C#的价值?
<?xml version="1.0" encoding="UTF-8"?>
<Database xmlns="http://www.example.com/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Datas>
<Data name="sMsg" access="private" xsi:type="collection" type="string">
<Value key="Cycle" value="deger1" />
<Value key="Error" value="deger2" />
<Value key="Info" value="deger3" />
<Value key="Jog" />
<Value key="Warning" />
</Data>
<Data name="tTabla" access="private" xsi:type="array" type="tabla" size="1">
<Field name="dddd" xsi:type="array" type="bool" size="1" />
<Field name="ssss" xsi:type="array" type="bool" size="1" />
<Field name="aaaa" xsi:type="array" type="num" size="1" />
<Field name="rrrr" xsi:type="collection" type="num">
<Value key="Actuel" />
<Value key="Expected" />
</Field>
</Data>
</Datas>
</Database>
答案 0 :(得分:0)
如果有多个&#34;错误&#34;属性的值,您可以这样做:
IEnumerable<XAttribute> answer = xml.Descendants().Attributes().Where(node => node.Value == "Error");
foreach (var xAttribute in answer)
{
Console.WriteLine(xAttribute.Value);
}
如果您只想要第一个或只有一个:
string answer = xml.Descendants().Attributes().FirstOrDefault(node => node.Value == "Error");
注意FirstOrDefault
如果找不到任何&#34;错误&#34;可能会产生null
。 xml中的值。
这些查询是使用LINQ To XML完成的,我强烈建议您阅读。
答案 1 :(得分:0)
尝试此操作会返回XElement
Key
等于Error
XDocument m = XDocument.Load(@"Path");
var res = m.Descendants().Where(x => x.Name.LocalName.Equals("Value") && x.Attribute("key") != null && x.Attribute("key").Value.Equals("Error")).FirstOrDefault();
答案 2 :(得分:0)
您可以尝试这种方式:
var doc = XDocument.Parse(xml);
XNamespace d = doc.Root.GetDefaultNamespace();
var result = (string)
doc.Descendants(d + "Data")
.Elements(d + "Value")
.FirstOrDefault(o => (string) o.Attribute("key") == "Error")
.Attribute("value");
Console.WriteLine(result);