2016-05-04 4 views
1

私は、XML文書内のノードを読み込むしようとしていますが、私は、私は内側のテキストに基づいて見つけることができるノードの後のノードに内部テキストを読む必要は奇妙な問題を持っています。読書いるXmlNodeList

私は、XML文書

<?xml version="1.0"?> 
<DataFeedObject xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <TransactionID>a4b0ecc1-2d28-49f4-b9c7-caec861aa80d</TransactionID> 
    <ApplicationID>b0926229-3209-4881-8cf3-cf4a88756a7f</ApplicationID> 
    <TransactionDateTime>2016-04-25T21:03:49.5805295Z</TransactionDateTime> 
    <DataItems> 
    <DataItem> 
     <Name>Account_Type</Name> 
     <Value>Cash</Value> 
    </DataItem> 
    <DataItem> 
     <Name>Account_Type_MarginDetails</Name> 
    </DataItem> 
    <DataItem> 
     <Name>Agent_FirstName</Name> 
     <Value>Jane</Value> 
    </DataItem> 
    <DataItem> 
     <Name>Agent_IDNumber</Name> 
     <Value>12547896</Value> 
    </DataItem> 
    <DataItem> 
     <Name>Agent_LastName</Name> 
     <Value>Doe</Value> 
    </DataItem> 
</DataItems> 
.... 

私は、ノードをループすることができ、ノードAgent_LastNameに

node.SelectSingleNode("Name").InnerText == "Agent_LastName" 

を見つけることが、私は直接、このノードの後に​​値タグ内のテキストを必要としています。 次のノードに移動するにはどうすればいいですか?

私は次の反復で、ノードのアリを見つけたとき、私はちょうど内部テキストをつかむフラグを設定するフラグを設定することができますが、これはずさんなようです。

+0

'node.SelectSingleNode( "値")。InnerTextプロパティ== "現金"'は動作しませんか? – Mostafiz

答えて

2

XPathを使用

XmlDocument doc = new XmlDocument(); 
Doc.load(@"doc.xml"); 
XmlElement root = doc.DocumentElement; 
var node = root.SelectSingleNode("/DataFeedObject/DataItems/DataItem/[Name = 'Agent_LastName']/Value"); 
+0

私はもう少し詳しい情報が必要です。私はにxmlNodeを作成していると私はその後、SELECTSINGLENODE(しよう)と私は、パスを入力するが、項目が – Luckbox72

+0

が今ノードセット私がしようとした場合 – Luckbox72

+0

SELECTSINGLENODE( "// DataFeedObjectに評価される必要があり、エラーの式を取得nullであるというエラーが出ます/TransactionID").Value私は、内部テキストの値を取得しますが、私は// DataFeedObject/DataItems /のDataItem/[名=「Agent_LastName」])。値をしようとすると、私はエラー式がノードセットに評価される必要があり得ます。私はこれがこのパスのノードを見つけることができないことを意味すると仮定します。 – Luckbox72

0

ビットの周りにプレイした後、私は

if (node.SelectSingleNode("Name").InnerText == "Agent_LastName") 
    { 
     string name = node.SelectSingleNode("Value").InnerText 
    } 

唯一の問題は、私だけですべてのノードを反復処理することにより、作業にこれを取得することができるよさを働くこれを見つけましたノードリスト "DataItems/DataItem"。