Почему "foreach (var NastepcyRur в context.Descendants ()" не видит все теги в XML-файле - PullRequest
0 голосов
/ 13 декабря 2018

это часть моего XML-файла:

<PipeSelectionOptions ID="9" ClassId="108" CoTo="ODRDaneOgolneCOOP" AlreadyDumped="False">
<DobierajKsztalki Caption="Dobieraj kształtki" Value="A">True</DobierajKsztalki>
<KorygujSrednice Caption="koryguj" Value="B">True</KorygujSrednice>
<PonownieDobierajSrednice Caption="P">True</PonownieDobierajSrednice>
<PrzechodzDoNastepcowRur Caption="P">True</PrzechodzDoNastepcowRur>
<SposobWymiarowaniaWentObjesc Caption="S" Value="A">N</SposobWymiarowaniaWentObjesc>
<ZachowajNarzuconeSrednice Caption="Z">True</ZachowajNarzuconeSrednice>
<NastepcyRur Count="2">
  <ODRDaneOgolneNastepcyRurItem Index="0" ID="0" ClassId="0" AlreadyDumped="False">
    <IsAutoMetkaNastepnika Caption="">False</IsAutoMetkaNastepnika>
    <Metka Caption="" Value="R">2</Metka>
    <MetkaNastepnika Caption="" Value="R">1</MetkaNastepnika>
  </ODRDaneOgolneNastepcyRurItem>
  <ODRDaneOgolneNastepcyRurItem Index="1" ID="3" ClassId="0" AlreadyDumped="False">
    <IsAutoMetkaNastepnika Caption="">True</IsAutoMetkaNastepnika>
    <Metka Caption="" Value="R">1</Metka>
    <MetkaNastepnika Caption="" Value="(brak)">0</MetkaNastepnika>
  </ODRDaneOgolneNastepcyRurItem>
</NastepcyRur>

Я хочу получить ODRDaneOgolneNastepcyRurItem по коду:

foreach (XElement context in rootTemplate.XPathSelectElements("//PipeSelectionOptions"))
{
    if (context.Attribute("CoTo").Value.ToString().Equals("ODRDaneOgolneCOOP"))
    {
        foreach (var NastepcyRur in context.Descendants())
        {
            if (NastepcyRur.Name.LocalName.Equals("ODRDaneOgolneNastepcyRurItem"))
            {
                sb.Append("<li><span>Rodzina rur:</span> " + NastepcyRur.Element("Metka").Attribute("Value").Value.ToString() + ";<span> Nastpca rur:</span> " + NastepcyRur.Element("MetkaNastepnika").Attribute("Value").Value.ToString() +"</li>");
            }
        }
    }
}

.. но foreach (второй)финишируйте ZachowajNarzuconeSrednice , не видите NastepcyRur и детей NastepcyRur.Зачем?

1 Ответ

0 голосов
/ 13 декабря 2018
var doc = new XmlDocument();
            doc.Load(@"docs/example.xml");
            var root = doc.DocumentElement;
            var PipeSelectionOptions = root.SelectNodes("PipeSelectionOptions");
            if (PipeSelectionOptions != null && root.Attributes["CoTo"].Value == "ODRDaneOgolneCOOP")
            {
                foreach (XmlNode pipeSelectionOption in root)
                {
                    foreach (XmlNode NastepcyRur in pipeSelectionOption)
                    {
                        if (NastepcyRur.Name == "ODRDaneOgolneNastepcyRurItem")
                        {
                            foreach (XmlNode element in NastepcyRur)
                            {
                                if (element.Name != "IsAutoMetkaNastepnika")
                                    Console.WriteLine(element.Name + ":" + element.InnerText);
                            }
                        }
                    }
                }
            }

its working. try to convert by yourself.

Проверить это изображение

...