您好我在读取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 :(得分: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
}
答案 1 :(得分:1)
我身边没有大的XML知识,但由于Properties
是NewDataSet
的子节点,我的猜测是你首先必须得到Properties
节点,然后就可以了可能会得到你想要的节点。