读取XMLNodeList

时间:2016-05-04 19:23:36

标签: c# xmlnodelist

我有一个奇怪的问题,我正在尝试读取xml文档中的节点,但我需要在基于内部文本找到的节点之后读取节点内部文本。

我有一个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"

但我需要在此节点后直接使用Value标记中的文本。 我该如何步入下一个节点。

我可以设置一个标志设置标志,当我找到节点蚂蚁然后在下一次迭代时抓住内部文本但这看起来很草率。

2 个答案:

答案 0 :(得分:2)

使用Xpath

Verloren

答案 1 :(得分:-1)

在玩了一下后我发现这个有效

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

唯一的问题是我只能通过迭代节点列表中的所有节点来实现这一点&#34; DataItems / DataItem&#34;。