0

こんにちは、XML ファイルのノードの読み取りに問題がありますか? XML で子ノードが見つかりません。このコードはノードを検出しません。私が変更した場合:

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

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

次に、プロパティとリクエストデータを取得する2つのノードが返されますが、プロパティの子ノードが必要です。

プロパティの子ノードが表示されない理由を教えてください。それらを見つけるのを手伝ってください。


これが私の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 ファイルから値を取り出す方法を教えてください。

4

2 に答える 2

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
            }
于 2012-09-20T06:59:43.613 に答える
1

私の側には大きな XML の知識はありませんが、Propertiesは の子ノードであるNewDataSetため、最初にPropertiesノードを取得する必要があり、それによっておそらく必要なノードを取得できると思います。

于 2012-09-20T06:41:52.937 に答える