日期:2014-05-17  浏览次数:20432 次

关于xml转dataset类型后 读取子节点信息问题!
XML code

<?xml version="1.0" encoding="utf-8"?>
<q1:HotelGeoList xmlns:q1="http://api.elong.com/staticInfo/">
  <q1:HotelGeo>
    <q1:id>1</q1:id>
    <q1:country>中国</q1:country>
    <q1:provinceName>北京                </q1:provinceName>
    <q1:provinceId>0100</q1:provinceId>
    <q1:cityName>北京</q1:cityName>
    <q1:cityCode>0101</q1:cityCode>
    <q1:properties>2087</q1:properties>
    <q1:url>http://www.elong.com/hotels/Search.aspx?raCityName=%u5317%u4EAC</q1:url>
    <q1:districts>
      <q1:location>
        <q1:id>0001</q1:id>
        <q1:name>西城区</q1:name>
      </q1:location>
      <q1:location>
        <q1:id>0002</q1:id>
        <q1:name>东城区</q1:name>
      </q1:location>
      <q1:location>
        <q1:id>0003</q1:id>
        <q1:name>朝阳区</q1:name>
      </q1:location>


这是xml代码。
C# code

ds.ReadXml(Server.MapPath("xml/geo_cn.xml"));
string province =ds.Tables[0].Rows[i]["provinceId"].ToString();


这是c#代码。
问题:我现在可以获取这个provinceId节点的信息。获取不到districts节点里面的值。 我应该怎么获取districts节点下的location,id,name节点里面的值呢?求大虾帮帮忙!~~

------解决方案--------------------
string id=ds.table["districts"].rows[]["id"].tostring();
location,name 同理。

这里districts 单独成为一个表了 你的DS里面有三个表 。
 调试下 什么都出来了
------解决方案--------------------
C# code
        DataSet ds = new DataSet();
        ds.ReadXml(Server.MapPath("~/test.xml"));
        for (int i = 0; i < ds.Tables["location"].Rows.Count; i++)
        {
            Response.Write(ds.Tables["location"].Rows[i]["id"] + "<br/>");
            Response.Write(ds.Tables["location"].Rows[i]["name"] + "<br/><br/>");
        }

------解决方案--------------------
districts应该在另外一个表里。