2017-10-12 18 views
0

まず、<Tool>からPID"5678"を探して選択します。このPIDの助けを借りて、<Parent>からID"5678"を見つけて選択したいと思います。 PIDとIDは同じ値ですが、まず<Tool>から見つけなければなりません。 現時点では、次のコードがあり、最初のPIDを選択しています。この値を「コピー」して属性「ID」を検索するにはどうすればよいですか?C#XMLで属性を別の属性(子孫)で検索する

List<string> urls = xmldoc2.Descendants("PID").Select(x => x.Attribute("5678").Value).ToList(); 



<Tools> 
    <Tools> 
     <Tool> 
     <ID>1234</ID> 
     <PID>5678</PID> 
     <Name>Test</Name> 
     </Tool> 
    </Tools> 
    <Type> 
    <Parent> 
     <ID>5678</ID> 
     <PID>9999</PID> 
     <Name>Test2</Name> 
    </Parent> 
    </Type> 
</Tools> 
+0

2段階で行う必要があります。最初にToolとParentの両方のxmlを解析します。その後、親を取得します。実際には2段階コンパイラアプリケーションがあります。最初のステップは、定義を取得することです。第2のステップはデータを処理することです。基本的なコンピュータ科学アルゴリズム。 CS201。 – jdweng

答えて

0

Xmlには複数のルートノードがありますが、これはうまくいきません。 これを単一の親ノードにラップしてください(例:下の例では「ルート」) 何か手伝ってください。

文字列xmlData = @ "...あなたのXMLはここに....";

 var xmlDoc = new XmlDocument(); 
     xmlDoc.LoadXml(xmlData); 


     var pidNodes = xmlDoc.SelectNodes("//Root/Tools/Tools/Tool/PID"); 

     foreach(XmlNode node in pidNodes) 
     { 
      var typeNodeForPid = xmlDoc.SelectSingleNode(string.Format("//Root/Type/Parent[ID = '{0}']", node.InnerText)); 
     } 
+0

ありがとう、しかし、非常に大きなXMLは、私は多くのノードを持っています。子孫とそれを行うことはできませんか?私は.SelectSingleNodeと思う、それは不可能だ –