写一个小程序,从xml中读取数据,
*****************************   User.xsd 文件如下 *****************************
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Tbl_User" targetNamespace="http://tempuri.org/XMLSchema.xsd" xmlns:mstns="http://tempuri.org/XMLSchema.xsd" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
  <xs:element name="Tbl_User"  msdata:Locale="zh-CHS">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="User">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="UserName" type="xs:string" />
              <xs:element name="UserPwd" type="xs:string" />
              <xs:element name="Role" type="xs:int" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>************************  User.xml  文件如下 ************************
<?xml version="1.0" standalone="yes"?>
<Tbl_User>
  <User>
     <UserName>Admin</UserName>
     <UserPwd>123</UserPwd>
       <Role>1</Role>
  </User>
  <User>
     <UserName>user</UserName>
     <UserPwd>123</UserPwd>
       <Role>1</Role>
  </User>
</Tbl_User>
*****************************************************************程序如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.IO;
using System.Reflection;namespace FreeCarManager
{
    public partial class LoginFrm : Form
    {   private string  currentPath;
        public LoginFrm()
        {
            InitializeComponent();
        }        private void LoginFrm_Load(object sender, EventArgs e)
        {
            currentPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
            ListUser();
        }        private void ListUser()
        {
            //初始化DataSet
            System.Data.DataSet DS = new System.Data.DataSet();
            //初始化XML架构文件操作流
            FileStream FsXSD = new FileStream(currentPath+@"\User.xsd", FileMode.Open);
            //初始化XML架构读取设备
            XmlTextReader xtrXSD = new XmlTextReader(FsXSD);
            //载入XML架构到DS中
            DS.ReadXmlSchema(xtrXSD);
            //关闭XML架构读取设备
            xtrXSD.Close();
            //关闭XML架构文件操作流
            FsXSD.Close();
            //按照装载了的XML架构载入XML数据到DS
            DS.ReadXml(currentPath+@"\User.XML");
            UserNameCBox.DataSource = DS.Tables[0];
            UserNameCBox.DisplayMember = "UserName";
            UserNameCBox.ValueMember = "UserName";
            UserNameCBox.DataBindings.Add("SelectedValue", DS.Tables[0], "UserName");
            label1.Text = DS.Tables[0].Rows.Count.ToString();
         }        private void CancelBtn_Click(object sender, EventArgs e)
        {
            Close();
        }       
    }
}*****************************************************************郁闷的是死活取不出来数据,dataset里一直没有数据,请高手指点。
注:这是个 pocket pc 2003 程序。

解决方案 »

  1.   

    你方法写错了
    要写成foreach的才可以读取
    我也很久没用过了
    以前有代码,现在硬盘坏了
    没办法帮你
    我只知道具体的读法
      

  2.   

    前段时间就看到楼主的问题,没想到没人来回答,那给楼主解决一下。private void ListUser()
    {
        //初始化DataSet
        System.Data.DataSet DS = new System.Data.DataSet();
        //初始化XML架构文件操作流
        //FileStream FsXSD = new FileStream(@"c:\User.xsd", FileMode.Open);
        //初始化XML架构读取设备
        //XmlTextReader xtrXSD = new XmlTextReader(FsXSD);
        //载入XML架构到DS中
        DS.ReadXmlSchema(@"c:\User.xsd");
        //关闭XML架构读取设备
        //xtrXSD.Close();
        //关闭XML架构文件操作流
        //FsXSD.Close();
        //按照装载了的XML架构载入XML数据到DS
        DS.ReadXml(@"c:\User.XML", XmlReadMode.InferSchema);
        UserNameCBox.DataSource = DS.Tables[0];
        UserNameCBox.DisplayMember = "UserName";
        UserNameCBox.ValueMember = "UserName";
        UserNameCBox.DataBindings.Add("SelectedValue", DS.Tables[0], "UserName");
        label1.Text = DS.Tables[0].Rows.Count.ToString();