为什么“ foreach(context.Descendants()中的var NastepcyRur)在XML文件中看不到所有标记

时间:2018-12-13 09:52:15

标签: c# xml ranorex

这是我的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>");
            }
        }
    }
}

..但是在 ZachowajNarzuconeSrednice 上的foreach(第二)完成了,看不到NastepcyRur和NastepcyRur的子代。为什么?

1 个答案:

答案 0 :(得分:0)

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.

Check this Image