Условие Xmlelement для получения значения другого элемента с использованием c# - PullRequest
1 голос
/ 10 июля 2020

У меня xmldo c с несколькими записями. например:

<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 в строку

код, который я использовал:

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();
    }
}

в этом коде я не могу получить идентификатор значение условия, которое истинно. он возвращает все идентификаторы, но мне нужно только значение идентификатора, которое не соответствует истинному условию.

Ответы [ 2 ]

1 голос
/ 10 июля 2020

Вам нужно выбрать узлы «значения» и проанализировать их в вашем l oop. Например, чтобы вы начали:

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"
    }
}
0 голосов
/ 10 июля 2020

Пожалуйста, ознакомьтесь с основами от linq до 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...