<?xml version="1.0" encoding="utf-8"?>
<ResultSet>
  <xs:schema id="ResultSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop">
    <xs:element name="ResultSet" 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="papers_title" msdata:Caption="标题" msprop:FieldUnique="True" type="xs:string" minOccurs="0" />
                <xs:element name="papers_grade" msdata:Caption="级别" msprop:FieldUnique="True" type="xs:string" minOccurs="0" />
                <xs:element name="papers_keywords" msdata:Caption="关键词" msprop:FieldUnique="True" type="xs:string" minOccurs="0" />
                <xs:element name="papers_keywords_2" msdata:Caption="英文关键词" msprop:FieldUnique="True" type="xs:string" minOccurs="0" />
                <xs:element name="papers_contents" msdata:Caption="CHS摘要" msprop:FieldUnique="True" type="xs:string" minOccurs="0" />
                <xs:element name="papers_contents_2" msdata:Caption="EN摘要" msprop:FieldUnique="True" type="xs:string" minOccurs="0" />
                <xs:element name="bigclass_id" msdata:Caption="大类" msprop:FieldUnique="True" type="xs:string" minOccurs="0" />
                <xs:element name="smallclass_id" msdata:Caption="小类" msprop:FieldUnique="True" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>  <Table>
    <papers_title>淬火冷却过程三维有限元模拟及工艺参数优化的研究</papers_title>
    <papers_grade>博士</papers_grade>
    <papers_keywords>淬火;三维有限元法;模拟;换热系数;反传热分析;优化;</papers_keywords>
    <papers_keywords_2>quenching;three-dimensional finite element method;</papers_keywords_2>
    <papers_contents>淬火作为改变和提高材料性能的重要手段,在汽车、航空、运输、建筑及其他制造业领域有着广泛而重要的应用。</papers_contents>
    <papers_contents_2>As a significant means to change and improve the performance of materials, quenching is used widely in the manufacturing field, such as automobiles, aviation, transportation, and building. </papers_contents_2>
    <bigclass_id>工业技术</bigclass_id>
    <smallclass_id>金属学与金属工艺</smallclass_id>
  </Table>
  <Table>
    <papers_title>SHP2在幼鼠细菌性脑膜炎中的表达及原钒酸钠对脑膜炎脑损害的影响</papers_title>
    <papers_grade>博士</papers_grade>
    <papers_keywords>细菌性脑膜炎;蛋白酪氨酸磷酸酶;SHP2;原钒酸钠;肿瘤坏死因子;</papers_keywords>
    <papers_keywords_2>Bacterial meningitis;Protein tyrosine phosphatase;SHP2;Sodium orthovanadate;TNF-alpha;</papers_keywords_2>
    <papers_contents>研究背景;细菌性脑膜炎,也称化脓性脑膜炎,是一种严重危害儿童和成人健康的感染性疾病。</papers_contents>
    <papers_contents_2>Background:Bacterial meningitis,aslo named purulent meningitis,is an important infectious disease that threatens lives of children and dults. </papers_contents_2>
    <bigclass_id>医药、卫生</bigclass_id>
    <smallclass_id>儿科学</smallclass_id>
  </Table>
 </ResultSet>
我想在C#中的WINFORM中循环把所有Table节点的papers_title,papers_grade,papers_keywords,papers_keywords_2,papers_contents,papers_contents_2,bigclass_id,smallclass_id这些字段的值存到数据库中.请各位给点例子吧,我实在是晕了,读出来数据都是乱的.我的结果应该是这样的
1 papers_title的值 papers_grade的值 papers_keywords的值 papers_keywords_2的值 papers_contents的值 papers_contents_2的值 bigclass_id的值 smallclass_id的值 
2 papers_title的值 papers_grade的值 papers_keywords的值 papers_keywords_2的值 papers_contents的值 papers_contents_2的值 bigclass_id的值 smallclass_id的值 
然后把读出来的第1条和第2条的值存到数据库, 谢谢

解决方案 »

  1.   


    DataSet ds = new DataSet();
    ds.ReadXML("info.xml");
    //循环手工插入,或做对比更新
      

  2.   

            private void Form1_Load(object sender, EventArgs e)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(@"d:\a.xml");
                XmlNode root = xmlDoc.SelectSingleNode("ResultSet");
                foreach (XmlNode xn in root.ChildNodes)
                {
                    if (xn.Name == "Table")
                    {
                        foreach (XmlNode xn_sub in xn.ChildNodes)
                        {
                            //这里可以用xn_sub.Name来找你要的节点。                                                    
                            MessageBox.Show(xn_sub.InnerText);
                        }
                    }
                }
            }
    这样就行了。
      

  3.   

    "ypacyhero"理解错了!!!
    楼主是把xml数据写进数据库中!!
      

  4.   

    楼主提的问题主要是在XML里面找不到数据呀。只要找到了数据,
    再写入数据库就很简单了呀。
      

  5.   


    我能这么写吗?
    //这里可以用xn_sub.Name来找你要的节点。  
                            if (xn_sub.Name == "papers_title")
                            {
                                MessageBox.Show(xn_sub.InnerText);
                                break;
                            }可是怎么不弹出消息框呢?还是读的慢?
      

  6.   

    OK,已经搞定读出了,剩下的就是我怎么把它写到数据库里了,感谢ypacyhero 提供的方法.谢谢
                string fileName = this.TB_XML.Text.ToString();
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(fileName);
                XmlNode root = xmlDoc.SelectSingleNode("ResultSet");
                foreach (XmlNode xn in root.ChildNodes)
                {
                    if (xn.Name == "Table")
                    {
                        string InsertCommand = "Insert into xmltodb(xmltodb.Title, xmltodb.Leve, xmltodb.Tag, xmltodb.Tag_en, xmltodb.Memo_cn, xmltodb.Memo_en, xmltodb.Big_txt, xmltodb.Small_txt) Value(";
                        string Title = "", Leve = "", Tag = "", Tag_en = "", Memo_cn = "", Memo_en = "", Big_txt = "", Small_txt = "";
                        foreach (XmlNode xn_sub in xn.ChildNodes)
                        {
                            //这里可以用xn_sub.Name来找你要的节点。  
                            switch (xn_sub.Name)
                            {
                                case "papers_title":
                                    {
                                        Title = xn_sub.InnerText;
                                        break;
                                    }
                                case "papers_grade":
                                    {
                                        Leve = xn_sub.InnerText;
                                        break;
                                    }
                                case "papers_keywords":
                                    {
                                        Tag = xn_sub.InnerText;
                                        break;
                                    }
                                case "papers_keywords_2":
                                    {
                                        Tag_en = xn_sub.InnerText;
                                        break;
                                    }
                                case "papers_contents":
                                    {
                                        Memo_cn = xn_sub.InnerText;
                                        break;
                                    }
                                case "papers_contents_2":
                                    {
                                        Memo_en = xn_sub.InnerText;
                                        break;
                                    }
                                case "bigclass_id":
                                    {
                                        Big_txt = xn_sub.InnerText;
                                       break;
                                    }
                                case "smallclass_id":
                                    {
                                        Small_txt = xn_sub.InnerText;
                                        break;
                                    }
                                
                            }
                            
                        }
                        InsertCommand = InsertCommand + Title.ToString() + Leve.ToString() + Tag.ToString() + Tag_en.ToString() + Memo_cn.ToString() + Memo_en.ToString() + Big_txt.ToString() + Small_txt.ToString() + ")";
                        MessageBox.Show(InsertCommand);
                        InsertCommand = "";                }
                }