[英]Reading XML inner child node using c#
I am trying to read xml in c#. 我正在尝试在C#中读取xml。 I am able to read the node 'ArrayOfCruisePriceSummaryResponse' but how can i read the inner nodes.
我能够读取节点“ ArrayOfCruisePriceSummaryResponse”,但如何读取内部节点。
XmlNodeList xmlnode;
xmlnode = xml.GetElementsByTagName("CruisePriceSummaryResponse");
for (int i = 0; i <= xmlnode.Count - 1; i++)
{
}
Using GetElementsByTagName
I am able to reach to that node but how can I read the inner child. 使用
GetElementsByTagName
我可以到达该节点,但是如何读取内部子级。 I want to read TotalPrice
from BestFare
and FullFare
Each child has two innerchilds BestFare
and FullFare
and I need to read each TotalPrice
. 我想从
BestFare
和FullFare
读取TotalPrice
。每个孩子都有两个内在孩子BestFare
和FullFare
,我需要读取每个TotalPrice
。
<ArrayOfCruisePriceSummaryResponse
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.datacontract.org/2004/07/OpenseasAPI.ServiceModel">
<CruisePriceSummaryResponse>
<AvailablePromos
xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d3p1:string>FLA</d3p1:string>
<d3p1:string>FLB</d3p1:string>
</AvailablePromos>
<Brand>PA</Brand>
<CruiseCategory i:nil="true"/>
<RoomSize>
<CruisePriceSummaryRoomSize>
<BestFare>
<TotalPrice>2798.0000000</TotalPrice>
</BestFare>
<FullFare>
<TotalPrice>3198.000000</TotalPrice>
</FullFare>
<PaxCount>2</PaxCount>
</CruisePriceSummaryRoomSize>
<CruisePriceSummaryRoomSize>
<BestFare>
<TotalPrice>2796.000000</TotalPrice>
</BestFare>
<FullFare>
<TotalPrice>4196.000000</TotalPrice>
</FullFare>
<PaxCount>4</PaxCount>
</CruisePriceSummaryRoomSize>
</RoomSize>
<ShipCode>PD</ShipCode>
</CruisePriceSummaryResponse>
<CruisePriceSummaryResponse>
<AvailablePromos
xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d3p1:string>FLA</d3p1:string>
<d3p1:string>LF1</d3p1:string>
</AvailablePromos>
<Brand>PA</Brand>
<RoomSize>
<CruisePriceSummaryRoomSize>
<BestFare>
<TotalPrice>1298.000000</TotalPrice>
</BestFare>
<FullFare>
<TotalPrice>3498.000000</TotalPrice>
</FullFare>
<PaxCount>2</PaxCount>
</CruisePriceSummaryRoomSize>
<CruisePriceSummaryRoomSize>
<BestFare>
<TotalPrice>1796.000000</TotalPrice>
</BestFare>
<FullFare>
<TotalPrice>5396.000000</TotalPrice>
</FullFare>
<PaxCount>4</PaxCount>
</CruisePriceSummaryRoomSize>
</RoomSize>
<ShipCode>PJ</ShipCode>
</CruisePriceSummaryResponse>
</ArrayOfCruisePriceSummaryResponse>
PS I dont not want to use LINQ because I am working on a SSIS project using VS2008 and it does not support LINQ. PS我不想使用LINQ,因为我正在使用VS2008进行SSIS项目,并且它不支持LINQ。
You can use the various SelectNode
variants to traverse your document and extract your data. 您可以使用各种
SelectNode
变体遍历文档并提取数据。
Try this: 尝试这个:
XmlNodeList xmlnodes;
xmlnodes = xml.GetElementsByTagName("CruisePriceSummaryResponse");
for (int i = 0; i < xmlnodes.Count; i++)
{
XmlNodeList rooms = xmlnodes[i].SelectNodes("RoomSize/CruisePriceSummaryRoomSize");
for(int j = 0; j < rooms.Count; j++)
{
string bestFare = rooms[j].SelectSingleNode("BestFare/TotalPrice").InnerText;
string fullFare = rooms[j].SelectSingleNode("FullFare/TotalPrice").InnerText;
// do whatever you need
}
}
You might want to look here for information about XPath locations. 您可能需要在这里查找有关XPath位置的信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.