2014-11-09 3 views
0

XML 문서 :값을 검색하기 위해 XmlDocument.SelectNodes를 가져올 수 없습니다?

<HotelValuedAvailRS xmlns="http://www.hotelbeds.com/schemas/2005/06/messages" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.hotelbeds.com/schemas/2005/06/messages HotelValuedAvailRS.xsd" timeToExpiration="1799971" totalItems="90" echoToken="DummyEchoToken"><AuditData><ProcessTime>275</ProcessTime><Timestamp>2014-11-04 11:39:28.253</Timestamp><RequestHost>54.169.51.224</RequestHost><ServerName>FORM</ServerName><ServerId>FO</ServerId><SchemaRelease>2005/06</SchemaRelease><HydraCoreRelease>2014.07.10.PCI</HydraCoreRelease><HydraEnumerationsRelease>N/A</HydraEnumerationsRelease><MerlinRelease>N/A</MerlinRelease></AuditData><PaginationData currentPage="1" totalPages="5"/><ServiceHotel xsi:type="ServiceHotel" availToken="18S4Jo2aVQeZLWqDTnJ3bwbh"><ContractList><Contract><Name>ID_B2B_24#BARI</Name><IncomingOffice code="1"></IncomingOffice><Classification code="NOR">Online Price</Classification></Contract></ContractList><DateFrom date="20141228"/><DateTo date="20141230"/><Currency code="EUR">Euro</Currency><HotelInfo xsi:type="ProductHotel"><Code>271</Code><Name>TRYP Palma Bellver Hotel</Name><ImageList><Image><Type>jpg</Type><Order>1</Order><VisualizationOrder>1</VisualizationOrder><Url>http://www.hotelbeds.com/giata/small/00/000271/000271a_hb_a_003.jpg</Url></Image><Image><Type>jpg</Type><Order>2</Order><VisualizationOrder>2</VisualizationOrder><Url>http://www.hotelbeds.com/giata/small/00/000271/000271a_hb_w_001.jpg</Url></Image></ImageList><Category type="SIMPLE" code="4EST" shortname="4*">4 STARS</Category><Destination type="SIMPLE" code="PMI"><Name>Majorca</Name><ZoneList><Zone type="SIMPLE" code="10">Palma</Zone></ZoneList></Destination><ChildAge ageFrom="0" ageTo="0"/><Position latitude="39.56860999999999961574" longitude="2.63178000000000000824"/></HotelInfo><AvailableRoom><HotelOccupancy><RoomCount>1</RoomCount><Occupancy><AdultCount>2</AdultCount><ChildCount>0</ChildCount></Occupancy></HotelOccupancy><HotelRoom SHRUI="F7TSfb7tBLYH3W4X5CaNVA==" availCount="99" onRequest="N"><Board type="SIMPLE" code="SH-E10" shortname="RO">ROOM ONLY</Board><RoomType type="SIMPLE" code="DBL-E10" characteristic="ST">DOUBLE STANDARD</RoomType><Price><Amount>149.740</Amount></Price></HotelRoom></AvailableRoom><AvailableRoom><HotelOccupancy><RoomCount>1</RoomCount><Occupancy><AdultCount>2</AdultCount><ChildCount>0</ChildCount></Occupancy></HotelOccupancy><HotelRoom SHRUI="7zsBOMYAObs09Gt/WwvZIg==" availCount="99" onRequest="N"><Board type="SIMPLE" code="HD-E10" shortname="BB">BED AND BREAKFAST</Board><RoomType type="SIMPLE" code="DBL-E10" characteristic="ST">DOUBLE STANDARD</RoomType><Price><Amount>190.120</Amount></Price></HotelRoom></AvailableRoom><AvailableRoom><HotelOccupancy><RoomCount>1</RoomCount><Occupancy><AdultCount>2</AdultCount><ChildCount>0</ChildCount></Occupancy></HotelOccupancy><HotelRoom SHRUI="HMrRj2pAKzao/Y1tnmr20A==" availCount="99" onRequest="N"><Board type="SIMPLE" code="SH-E10" shortname="RO">ROOM ONLY</Board><RoomType type="SIMPLE" code="DBL-E10" characteristic="VM">DOUBLE SEA VIEW</RoomType><Price><Amount>203.580</Amount></Price></HotelRoom></AvailableRoom><AvailableRoom><HotelOccupancy><RoomCount>1</RoomCount><Occupancy><AdultCount>2</AdultCount><ChildCount>0</ChildCount></Occupancy></HotelOccupancy><HotelRoom SHRUI="1+9/i90A0ZqbOmZlDSFStw==" availCount="99" onRequest="N"><Board type="SIMPLE" code="HD-E10" shortname="BB">BED AND BREAKFAST</Board><RoomType type="SIMPLE" code="DBL-E10" characteristic="VM">DOUBLE SEA VIEW</RoomType><Price><Amount>243.960</Amount></Price></HotelRoom></AvailableRoom><AvailableRoom><HotelOccupancy><RoomCount>1</RoomCount><Occupancy><AdultCount>2</AdultCount><ChildCount>0</ChildCount></Occupancy></HotelOccupancy><HotelRoom SHRUI="sLrp9E+6lq/FBOsvMhv7Qw==" availCount="99" onRequest="N"><Board type="SIMPLE" code="SH-E10" shortname="RO">ROOM ONLY</Board><RoomType type="SIMPLE" code="JSU-E10" characteristic="ST">JUNIOR SUITE STANDARD</RoomType><Price><Amount>358.370</Amount></Price></HotelRoom></AvailableRoom><AvailableRoom><HotelOccupancy><RoomCount>1</RoomCount><Occupancy><AdultCount>2</AdultCount><ChildCount>0</ChildCount></Occupancy></HotelOccupancy><HotelRoom SHRUI="KiWIO7156n0+4HmG3UiKrw==" availCount="99" onRequest="N"><Board type="SIMPLE" code="HD-E10" shortname="BB">BED AND BREAKFAST</Board><RoomType type="SIMPLE" code="JSU-E10" characteristic="ST">JUNIOR SUITE STANDARD</RoomType><Price><Amount>398.750</Amount></Price></HotelRoom></AvailableRoom></ServiceHotel></HotelValuedAvailRS> 

C# 코드 :

XmlDocument xdcDocument = new XmlDocument(); 

xdcDocument.Load(@"E:\\Hotel.xml"); 

XmlElement xelRoot = xdcDocument.DocumentElement; 
XmlNodeList listOfContacts = xdcDocument.SelectNodes("/HotelValuedAvailRS/ServiceHotel/HotelInfo"); 
foreach (XmlNode xndNode in listOfContacts) 
{ 
    string name = xndNode["Name"].InnerText; 
    string order = xndNode["Order"].InnerText; 
} 

내가 위의 코드와 위의 XML에서 모든 세부 사항을 받고 있지 않다. 도와주세요.

답변

1

listOfContacts을 (를) 선택하는 데 사용하는 xpath가 문서의 내용과 일치하지 않습니다. 관심있는 노드의 실제 경로를 지정하도록 변경하십시오.

사실 루프 내에서 요소 이름을 지정하지 마십시오. 문서의 어느 노드에서 일치시킬 것으로 예상 했습니까?

편집 # 1 : 사실 이제는 전체 문서를 지정 했으므로 더 적절합니다. 컴파일하고 실행해야했지만 xpath에 네임 스페이스 선언이 없습니다. 루트 요소가 네임 스페이스 http://www.hotelbeds.com/schemas/2005/06/messages에 있다고 선언했지만 xpath는 네임 스페이스가없는 요소 만 선택했습니다.

이 문제를 해결하는 가장 쉬운 방법은 XPath에있는 모든 요소 이름 앞에 접두어를 사용하는 것이다

"/ns:HotelValuedAvailRS/ns:ServiceHotel/ns:HotelInfo"

그리고 SelectNodes에 통화에 정의 된이 접두어 함께 XmlNamespaceManager 통과.

+0

안녕하세요. 여기에 전체 XML 문서를 전달할 수 없습니다. 실제로 내 길은 옳습니다. 업데이트 된 XML 문서를 확인하십시오. – Sudu

+0

안녕하세요. 고마워. 이것은 정말로 도움이되었습니다. 하지만 여기서 한 가지 더 물어볼 필요가 있습니다. 호텔 이름 정보가 포함 된 ""노드가 있습니다. 노후화 서브 노드 호출 ""을 포함하는 다른 노드 호출 ""이 있습니다. ""노드를 통해 반복하고 ""노드 아래의 모든 세부 정보를 얻으려고합니다. 나는 XML 부분 아래 루프에 필요한 Sudu

+0

의 세부 사항을 얻기 위해 제발 도와주세요 당신이 이미하고있는 것과 똑같이, 이미지 노드 집합을 선택하는 데 필요한 경로 만 바꾸면됩니다. 실제로 그 일을하기 위해 내 도움이 필요하지 않습니다. –

관련 문제