Xmlelement条件使用c#获取另一个元素的值
Xmlelement condition to get value of another element using c#
我有一份包含多条记录的 xml文档。
例如:
<value>
<id>aaaaa</id>
<condition>true</condition>
</value>
<value>
<id>bbbb</id>
<condition>false</condition>
</value>
<value>
<id>ccccc</id>
<condition>true</condition>
</value>
现在使用 c# 和 xml linq
我需要检查条件元素值
如果它是真的那么我需要将它的 id 值传递给 string
我使用的代码:
XmlDocument doc = new XmlDocument();
doc.Load(@"D:\Downloads\file.xml");
XmlElement xml= doc.DocumentElement;
XmlNodeList cond= xml.SelectNodes("/value/condition");
XmlNodeList id= xml.SelectNodes("/value/id");
foreach (XmlElement node in cond)
{
var value = node.InnerText;
if (value == "true")
{
var id_values = id.InnerText;
Console.WriteLine(id_values);
Console.ReadKey();
}
}
在此代码中,我无法获取条件的 id 值,该值为真。它 returns 所有 ID,但我只需要不符合真实条件的 ID 值。
您需要 select“值”节点,然后在您的循环中进行分析。例如让你开始:
var s = @"<?xml version=""1.0"" encoding=""utf - 8""?>
<values>
<value>
<id>aaaaa</id>
<condition>true</condition>
</value>
<value>
<id>bbbb</id>
<condition>false</condition>
</value>
<value>
<id>ccccc</id>
<condition>true</condition>
</value>
</values>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(s);
var nodes = doc.SelectNodes("/values/value");
foreach (XmlElement node in nodes)
{
if (node.SelectSingleNode("condition").InnerText == "true")
{
Console.WriteLine(node.SelectSingleNode("id").InnerText); // prints "aaaaa" and "ccccc"
}
}
请查看 linq to xml 的基础知识。它有许多易于导航的 API。
XElement.Load("file")
.Elements(XName.Get("value"))
.Where(x => x.Element("condition").Value.Equals(bool.TrueString, StringComparison.OrdinalIgnoreCase))
.Select(x => x.Element("id").Value);
我有一份包含多条记录的 xml文档。 例如:
<value>
<id>aaaaa</id>
<condition>true</condition>
</value>
<value>
<id>bbbb</id>
<condition>false</condition>
</value>
<value>
<id>ccccc</id>
<condition>true</condition>
</value>
现在使用 c# 和 xml linq
我需要检查条件元素值
如果它是真的那么我需要将它的 id 值传递给 string
我使用的代码:
XmlDocument doc = new XmlDocument();
doc.Load(@"D:\Downloads\file.xml");
XmlElement xml= doc.DocumentElement;
XmlNodeList cond= xml.SelectNodes("/value/condition");
XmlNodeList id= xml.SelectNodes("/value/id");
foreach (XmlElement node in cond)
{
var value = node.InnerText;
if (value == "true")
{
var id_values = id.InnerText;
Console.WriteLine(id_values);
Console.ReadKey();
}
}
在此代码中,我无法获取条件的 id 值,该值为真。它 returns 所有 ID,但我只需要不符合真实条件的 ID 值。
您需要 select“值”节点,然后在您的循环中进行分析。例如让你开始:
var s = @"<?xml version=""1.0"" encoding=""utf - 8""?>
<values>
<value>
<id>aaaaa</id>
<condition>true</condition>
</value>
<value>
<id>bbbb</id>
<condition>false</condition>
</value>
<value>
<id>ccccc</id>
<condition>true</condition>
</value>
</values>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(s);
var nodes = doc.SelectNodes("/values/value");
foreach (XmlElement node in nodes)
{
if (node.SelectSingleNode("condition").InnerText == "true")
{
Console.WriteLine(node.SelectSingleNode("id").InnerText); // prints "aaaaa" and "ccccc"
}
}
请查看 linq to xml 的基础知识。它有许多易于导航的 API。
XElement.Load("file")
.Elements(XName.Get("value"))
.Where(x => x.Element("condition").Value.Equals(bool.TrueString, StringComparison.OrdinalIgnoreCase))
.Select(x => x.Element("id").Value);