SqlConnection str = new SqlConnection("server=.;database=db_test;Trusted_Connection=true");
            string str1 = "select 雇员ID,姓氏,头衔 from student";
            str.Open();
            DataSet dt = new DataSet();
            SqlDataAdapter da1 = new SqlDataAdapter(str1, str);
            da1.Fill(dt);
            dt.WriteXmlSchema("C:\\ttt.xml");
            //dt.WriteXml("C:\\tt.xml");
            Console.Write("OK!");
            str.Close();
得到如下的代码:<?xml version="1.0" standalone="yes"?>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Table">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="雇员ID" type="xs:short" minOccurs="0" />
              <xs:element name="姓氏" type="xs:string" minOccurs="0" />
              <xs:element name="头衔" type="xs:string" minOccurs="0" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>
请大家指点下,如何才能获取到雇员ID、姓氏、头衔这些属性。以及如何获取他们的数据类型,如short、string

解决方案 »

  1.   

    首先问楼主,为什么要上面的xml?
    直接从DataSet中取不就可以了么?如果非要从xml中取,,如下
      /// <summary>
            /// 获取指定节点下面对应属性的值
            /// </summary>
            /// <param name="strFileName">文件路径</param>
            /// <param name="nodeName">节点名称</param>
            /// <param name="nodeDir">指定节点所在的节点目录</param>
            /// <param name="attribute">节点对应的属性名称</param>
            /// <returns></returns>
            public static string GetNodeValue(string strFileName, string nodeName, string nodeDir, string attribute)
            {
                string value = null;
                try
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(strFileName);                XmlNodeList nodeList = xmlDoc.SelectSingleNode(nodeDir).ChildNodes;//获取bookstore节点的所有子节点                 foreach (XmlNode xn in nodeList)    //遍历所有子节点 
                    {
                        XmlElement xe = (XmlElement)xn;  //将子节点类型转换为XmlElement类型                     if (xe.Name == nodeName)
                        {
                            //value = xe.InnerText.Trim();
                            value = (xe).Attributes[attribute].Value;
                            break;
                        }
                    }
                }
                catch (Exception exp)
                {
                    throw exp;
                }            return value;
            }
      

  2.   

    1、可以用DataTable.ReadXmlSchema()方法来还原DataTable,然后查询DataColumn的Name和DataType属性
    2、也可以直接分析XMLusing System.Xml;
    //...
    XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("C:\\ttt.xml");            XmlNamespaceManager nsManager = new XmlNamespaceManager(xmlDoc.NameTable);
                nsManager.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema");            XmlNodeList xmlNodeList = xmlDoc.DocumentElement.SelectNodes(@"//xs:sequence/xs:element", nsManager);            Console.WriteLine("{0} nods founded",xmlNodeList.Count);
                foreach (XmlNode node in xmlNodeList)
                {
                    Console.WriteLine("Name={0} Type={1}", node.Attributes["name"].Value, node.Attributes["type"].Value);
                }