2012-09-20 12 views
1

XML 태그의 내부 텍스트 또는 값으로 배열을 채우려고합니다. 태그의 노드가 저장된 값을 꺼내는 데 문제가 있음에도 불구하고 루프 할 수 있습니다.XML 태그에서 innertext 가져 오기?

질문의 맨 아래에있는 속성 태그, XML의 하위 노드를 반복하고 있습니다. 다음과 같이

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load("C://Users//Shaun//Documents//Visual Studio 2010//Projects//LightStoneTestService//LightStoneTestService//FileTest//Testdo.xml"); 

//XmlNodeList dataNodes = xmlDoc.SelectNodes("//Properties"); 
XmlNodeList oXMlNodeList = xmlDoc.GetElementsByTagName("Properties"); 

for (int Count = 0; Count < 27; Count++) 
{ 
    foreach (XmlNode node in oXMlNodeList) 
    {      
     int Max = node.ChildNodes.Count;     
     foreach (XmlNode childNode in node.ChildNodes) //For each child node in FieldData 
     {       
       if (ArrayProperties[Count].LightStoneTag == childNode.Name) 
      { 
       ArrayProperties[Count].Value = node.SelectSingleNode(ArrayProperties[Count].LightStoneTag).InnerText;  
      }              
     } 
    } 
} 

** * ** 내 XML 파일은 같습니다

<NewDataSet> 
    <RequestData xmlns="RequestData"> 
    <Req_ID>3204eba5-07f4-4e83-8b46-d89fa1d70bf6</Req_ID> 
    </RequestData> 
    <Properties xmlns="Properties"> 
    <sr_id>19374324</sr_id> 
    <prop_id>9841107</prop_id> 
    <DEED_ID>21</DEED_ID> 
    <PROPTYPE_ID>2</PROPTYPE_ID> 
    <SS_ID>2315</SS_ID> 
    <NAD_ID>3048001</NAD_ID> 
    <property_type>SS</property_type> 
    <PROVINCE>GA</PROVINCE> 
    <MUNICNAME>CITY OF JOHANNESBURG</MUNICNAME> 
    <DEEDTOWN>ALLENS NEK</DEEDTOWN> 
    <SECTIONAL_TITLE>SS GREENHILLS</SECTIONAL_TITLE> 
    <UNIT>15</UNIT> 
    <TownShip>ALLENS NEK</TownShip> 
    <Purchase_Price>236500</Purchase_Price> 
    <Purchase_Date>20031020</Purchase_Date> 
    <Bond_Number>SB37369/2006</Bond_Number> 
    <Township_alt>ALLEN'S NEK EXT 32</Township_alt> 
    <RE>false</RE> 
    </Properties> 
</NewDataSet> 

답변

1

그것은 네임 스페이스의 문제입니다. for 루프 전에 코드의이 부분을 추가

 NameTable nt = new NameTable(); 
     nt.Add("Properties"); 
     XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt); 
     nsmgr.AddNamespace("ns1", "Properties"); 

변경 당신이 InnerText를 검색 라인 :

 ArrayProperties[Count].Value = node 
      .SelectSingleNode(
       String.Concat("//ns1:", ArrayProperties[Count].LightStoneTag), 
       nsmgr) 
      .InnerText; 
+0

는 아래의 링크를 보라. http://stackoverflow.com/questions/11691527/cant-get-inner-text-from-fql-using-xpath-c-sharp –