读取 XMLNodeList
Reading 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"
但我需要紧接在该节点之后的值标记中的文本。
我怎样才能进入下一个节点。
我可以只设置一个标志,当我找到节点蚂蚁时设置标志,然后在下一次迭代中获取内部文本,但这看起来很草率。
使用 Xpath
XmlDocument doc = new XmlDocument();
Doc.load(@"doc.xml");
XmlElement root = doc.DocumentElement;
var node = root.SelectSingleNode("/DataFeedObject/DataItems/DataItem/[Name = 'Agent_LastName']/Value");
玩了一会儿后,我发现这个很管用
if (node.SelectSingleNode("Name").InnerText == "Agent_LastName")
{
string name = node.SelectSingleNode("Value").InnerText
}
唯一的问题是我只能通过遍历节点列表中的所有节点来实现它 "DataItems/DataItem"。
我有一个奇怪的问题,我试图读取 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"
但我需要紧接在该节点之后的值标记中的文本。 我怎样才能进入下一个节点。
我可以只设置一个标志,当我找到节点蚂蚁时设置标志,然后在下一次迭代中获取内部文本,但这看起来很草率。
使用 Xpath
XmlDocument doc = new XmlDocument();
Doc.load(@"doc.xml");
XmlElement root = doc.DocumentElement;
var node = root.SelectSingleNode("/DataFeedObject/DataItems/DataItem/[Name = 'Agent_LastName']/Value");
玩了一会儿后,我发现这个很管用
if (node.SelectSingleNode("Name").InnerText == "Agent_LastName")
{
string name = node.SelectSingleNode("Value").InnerText
}
唯一的问题是我只能通过遍历节点列表中的所有节点来实现它 "DataItems/DataItem"。