Click here to Skip to main content
15,917,005 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I'm looping through an XML document that has two lists, so for example:

<xml>
<nodelist1 A>
<node1></node1>
<node2></node2>
<nodelist2 A>
<node3>
<node4>
</nodelist2>
</nodelist1>
<nodelist1 B>
<node1></node1>
<node2></node2>
<nodelist2 B>
<node3>
<node4>
</nodelist2>
</nodelist1>
</xml>

Looping through the first node list is fine, but I can't get the second one to work.

Here is a code sample:
nodeRooms = xmlDoc.SelectNodes("/test:Reservation/test:Rooms/test:Room", ns);
foreach (XmlNode nodeRoom in nodeRooms)
{
objWriter.WriteStartElement("Room");
objWriter.WriteStartElement("RoomTypeCode");
objWriter.WriteString(nodeRoom["RoomTypeCode"].InnerText);
objWriter.WriteEndElement();//RoomTypeCode
objWriter.WriteStartElement("Quantity");
objWriter.WriteString(nodeRoom["Quantity"].InnerText);
objWriter.WriteEndElement();//Quantity
objWriter.WriteStartElement("NumberOfAdults");
objWriter.WriteString(nodeRoom["NumberOfAdults"].InnerText);
objWriter.WriteEndElement();//Numberofadults
objWriter.WriteStartElement("NumberOfChildren");
objWriter.WriteString(nodeRoom["NumberOfChildren"].InnerText);
objWriter.WriteEndElement();//Numberofchildren
objWriter.WriteStartElement("PricePerRoom");
objWriter.WriteString(nodeRoom["PricePerRoom"].InnerText);
objWriter.WriteEndElement();//PricePerRoom
objWriter.WriteStartElement("RateTypes");
XmlNodeList nodeRatePlans = nodeRoom.SelectNodes("Room/RateTypes/RateType", ns);
foreach (XmlNode nodeRatePlan in nodeRatePlans)
{
objWriter.WriteStartElement("RateType");
objWriter.WriteStartElement("Date");
objWriter.WriteString(CheckIn);
objWriter.WriteEndElement();//Date
objWriter.WriteStartElement("Price");
//Put Price Here
objWriter.WriteEndElement();//Price
objWriter.WriteStartElement("RateTypeCode");
//Put RateTypeCode Here
objWriter.WriteEndElement();//RateTypeCode
objWriter.WriteStartElement("BoardTypeCode");
//PutBoardTypeCode Here
objWriter.WriteEndElement();//BoardTypeCode
objWriter.WriteEndElement();//RateType
}
objWriter.WriteEndElement();//RateTypes
objWriter.WriteEndElement();//Room
}
objWriter.WriteEndElement();//Rooms

The rate plans is the second nodelist.

Please help!
Thanks
James
Posted

you need to put the correct xml file in your question. its very hard to help you troubleshoot if we can't see the exact xml data you are trying to traverse.
 
Share this answer
 
XML
<?xml version="1.0" encoding="utf-8"?>
<Reservation xmlns="http://www.transhotel.com/transHotel/2004A"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.transhotel.com/transHotel/2004A ReservationRQ.xsd">
  <WholesalerID>TRANSHOTEL</WholesalerID>
  <Product>1</Product>
  <ID>28610294</ID>
  <CommitLevel>1</CommitLevel>
  <HotelCode>1154718</HotelCode>
  <CheckIn>2010-04-21</CheckIn>
  <CheckOut>2010-04-22</CheckOut>
  <CustomerName>availability search only</CustomerName>
  <Remarks />
  <TotalPrice>300.0</TotalPrice>
  <Currency>GBP</Currency>
  <Rooms>
    <Room>
      <RoomTypeCode>SDBL</RoomTypeCode>
      <Quantity>1</Quantity>
      <NumberOfAdults>2</NumberOfAdults>
      <NumberOfChildren>0</NumberOfChildren>
      <PricePerRoom>120.0</PricePerRoom>
      <PricePerBoard>0.0</PricePerBoard>
      <RateTypes>
        <RateType>
          <RateTypeCode>XX</RateTypeCode>
          <BoardTypeCode>DE</BoardTypeCode>
          <BoardPrice>0.0</BoardPrice>
          <Price>120.0</Price>
          <Date>2010-04-21</Date>
        </RateType>
      </RateTypes>
    </Room>
    <Room>
      <RoomTypeCode>STTP</RoomTypeCode>
      <Quantity>1</Quantity>
      <NumberOfAdults>3</NumberOfAdults>
      <NumberOfChildren>0</NumberOfChildren>
      <PricePerRoom>180.0</PricePerRoom>
      <PricePerBoard>0.0</PricePerBoard>
      <RateTypes>
        <RateType>
          <RateTypeCode>XX</RateTypeCode>
          <BoardTypeCode>DE</BoardTypeCode>
          <BoardPrice>0.0</BoardPrice>
          <Price>180.0</Price>
          <Date>2010-04-21</Date>
        </RateType>
      </RateTypes>
    </Room>
  </Rooms>
</Reservation>
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900