2012-09-20 86 views
0

嗨,我有問題讀出一個XML文件的節點?我無法找到XML中的子節點。此代碼找不到節點。如果我改變:從XML文件讀出數據?

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

XmlNodeList dataNodes = xmlDoc.SelectNodes("//NewDataSet"); 

然後我得到兩個節點返回我得到的屬性和的RequestData,但我想要的屬性子節點。

有人可以請告訴我爲什麼我不能看到屬性的子節點,請幫我找到它們。


這是我的C#代碼。

if (File.Exists("C://Users//Shaun//Documents//Visual Studio 2010//Projects//LightStoneTestService//LightStoneTestService//FileTest//Testdo.xml")) //In bin and Debug 
    { 
    XmlDocument xmlDoc = new XmlDocument(); 

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

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

    foreach (XmlNode node in dataNodes) 
     { 
     int Count = 0; 
     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; 
      } 
      Count = Count + 1; 
     } 
     } 

這裏是我想讀的所有節點的屬性我的XML文件:

<NewDataSet> 
    <RequestData xmlns="RequestData"> 
    <Req_ID>fe0bc7ab-1dc9-4526-bd29-b522ff13e162</Req_ID> 
    </RequestData> 
    <Properties xmlns="Properties"> 
    <sr_id>19374149</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> 
    <ERF>627</ERF> 
    <PORTION>0</PORTION> 
    <BUYER_NAME>FOURIE MARION ROBB</BUYER_NAME> 
    <FIRSTNAME>MARION</FIRSTNAME> 
    <MIDDLENAME>ROBB</MIDDLENAME> 
    <SURNAME>FOURIE</SURNAME> 
    <PERSON_TYPE_ID>PP</PERSON_TYPE_ID> 
    <BUYER_IDCK>7402110182087</BUYER_IDCK> 
    <MUNIC_ID>74</MUNIC_ID> 
    <PROV_ID>8</PROV_ID> 
    <STREET_NUMBER>973</STREET_NUMBER> 
    <STREET_NAME>MAIN</STREET_NAME> 
    <STREET_TYPE>ROAD   </STREET_TYPE> 
    <PO_CODE>1709</PO_CODE> 
    <User_ID>2443598d-948b-4322-bd91-d39f57bec1b6</User_ID> 
    <SS_Number>29</SS_Number> 
    <SS_UnitNoFrom>1</SS_UnitNoFrom> 
    <SS_UnitTo>26</SS_UnitTo> 
    <Size>65</Size> 
    <X>27.919578</X> 
    <Y>-26.125565</Y> 
    <SUBURB>ALLENS NEK</SUBURB> 
    <Registrar>J</Registrar> 
    <Title_Deed_No>ST28776/2004</Title_Deed_No> 
    <Reg_Date>20040519</Reg_Date> 
    <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> 

新零件

我有麻煩拉出內部文本,我的代碼在上面的foreach中,我的應用程序不斷斷線:

ArrayProperties[Count].Value = node.SelectSingleNode(ArrayProperties[Count].LightStoneTag).InnerText; 

有人請告訴我如何從XML文件中提取一個值。

+0

你有什麼問題?請提出更詳細的問題! – derape

+0

@derape ok添加了更多的細節,我試圖實現的是閱讀所有這些屬性的孩子節點在我for-each。 – Pomster

回答

2

下面是示例代碼

代碼加載文件

private const string XML_FILE_NAME = "sample.xml"; 
public static XmlDocument LoadSampleXML() 
    { 
     XmlDocument oXmlDocument = null; 
     try 
     { 

      oXmlDocument= new XmlDocument(); 
      oXmlDocument.Load(XML_FILE_NAME); 
      return oXmlDocument; 
     } 
     catch (Exception ex) 
     { 
      return oXmlDocument; 
     } 
    } 

下面的代碼,你可以用它來獲得子節點

private const string XML_NODE_PROP = "Properties"; 
XmlDocument oXmlDocument = null; 
oXmlDocument = LoadSampleXML(); 
XmlNodeList oXMlNodeList = oXmlDocument.GetElementsByTagName(XML_NODE_PROP); 

foreach (XmlNode oXmlNodeItem in oXMlNodeList) 
      { 
       // DoSomething 
      } 
+0

我無法從XML文件中獲取內部文本,您可以在上面的foreach中檢查我的代碼,它始終打破這一行:ArrayProperties [Count] .Value = node.SelectSingleNode(ArrayProperties [Count]。 LightStoneTag).InnerText; – Pomster

1

在我身邊沒有大的XML知識,但由於PropertiesNewDataSet的孩子節點,我的猜測是你首先必須得到Properties節點,並且你可以得到你想要的節點。

+0

我瘦你是對的,但我將如何去獲得子節點的子節點? – Pomster

+0

@Pommy我看到Manish已經發布了示例代碼。我無法幫助你。以前不要閱讀XML。在查看XML文件的結構之後,只發布了一個受過教育的猜測。 ;-) – Koen