+ -
当前位置:首页 → 问答吧 → 关于asp.net操作xml的问题

关于asp.net操作xml的问题

时间:2010-10-09

来源:互联网

<?xml version="1.0" encoding="utf-8" ?>
<siteconfig>
  <WebSit id="网站名称">
  <name>
  网站名称
  </name>
  <default>
  XXXX公司
  </default>
  <value>
   
  </value>
  </WebSit>
  <webSit id="版权信息">
  <name>
  版权信息
  </name>
  <default>
  @ 2010 XXXXinc.XXXXv1.0.0
  </default>
  <value>
   
  </value>
  </webSit>
</siteconfig>
xml结构如上
我想把xml读取到datatable 或者是dataset 中 
dataset和datatable的列是根据xml创建的 
 我写了一段代码
感觉不是很好 
public static DataTable GetData(string path, string tableName)
  {
  //创建XmlDocument类的实例
  XmlDocument xmldoc = new XmlDocument();
  //调用XmlDocument类中的Load()方法加载XML文件
  xmldoc.Load(path);
  //创建DataTable类型的变量dt
  DataTable dt = new DataTable();
  ///获取根节点
  XmlNode rootNode = xmldoc.SelectSingleNode("/" + tableName);
  //判断节点及其子节点是否为空,为空将返空值
  if (rootNode == null) return null;
  if (rootNode.ChildNodes.Count <= 0) return null;
  ///创建保存记录的数据列
   
  foreach (XmlNode XN in rootNode.ChildNodes[0].ChildNodes)
  {
  dt.Columns.Add(new DataColumn(XN.Name, typeof(string)));
  }
   
  ///创新获取数据节点的XPath
  string xmlPath = "/" + tableName;
  //获取XML节点下的所有节点
  XmlNodeList nodeList = rootNode.ChildNodes;
  //遍历所有节点
  foreach (XmlNode node in nodeList)
  {
  //创建数据表行,并在其中添加数据
  DataRow row = dt.NewRow();
  int i = 0;
  foreach (DataColumn column in dt.Columns)
  { ///读取每一个属性
   
  row[column.ColumnName] =node.ChildNodes[i].InnerText.Replace("\r\n","").Trim();
  i++;
  }
  //将数据表行添加到数据表中
  dt.Rows.Add(row);
  }
  //返回DataTable对象dt
  return dt;




  }
哪位高手给指点一下啊!

作者: illhf2008   发布时间: 2010-10-09

引用楼主 illhf2008 的回复:
<?xml version="1.0" encoding="utf-8" ?>
<siteconfig>
<WebSit id="网站名称">
<name>
网站名称
</name>
<default>
XXXX公司
</default>
<value>

</value>
</We……

问题补充 

 public static DataTable GetDataTable(string Path)
  {
  DataSet ds = new DataSet();
  DataTable dt = new DataTable();
  ds.ReadXml(Path);
  dt = ds.Tables[0];
  return dt;
  }
这种方法 只返回一条数据呢
哪位高手给写个好的方法 谢谢了!

作者: illhf2008   发布时间: 2010-10-09