现在的位置: 首页 > 综合 > 正文

C#中关于XML的读取和生成

2013年09月16日 ⁄ 综合 ⁄ 共 6308字 ⁄ 字号 评论关闭

1.简单的根据Key的值来获取xml的value 

<?xml version="1.0" standalone="no"?>
<!--This is a comment-->
<configSections>
  <appSettings>
 <add key="MySqlCon" value="Database=test;Data Source=127.0.0.1;User Id=root;Password=root;pooling=false;CharSet=utf8;port=3306" />
 <add key="csvFilePath" value="E:\Demo\Demo\bin\Debug\" />
  </appSettings>

</configSections>

 

 

 /// <summary>
        /// 根据key值获取value值
        /// </summary>
        /// <param name="configKey">key值</param>
        /// <returns>value值</returns>
        public static string ReadConfig(string configKey)
        {
            string configValue = "";
            XmlDocument doc = new XmlDocument();

           //导入xml文件
            doc.Load(_filePath);
            //找出名称为“add”的所有元素
            XmlNodeList nodes = doc.GetElementsByTagName("add");
            for (int i = 0; i < nodes.Count; i++)
            {
                //获得将当前元素的key属性
                XmlAttribute att = nodes[i].Attributes["key"];
                //根据元素的第一个属性来判断当前的元素是不是目标元素
                if (att.Value == "" + configKey + "")
                {
                    //对目标元素中的第二个属性赋值
                    att = nodes[i].Attributes["value"];
                    configValue = att.Value;
                    break;
                }
            }
            return configValue;
        }

2.生成xml文件

   private void btnClose_Click(object sender, EventArgs e)
        {
            XmlTextWriter myXmlTextWriter = new XmlTextWriter("swms_setting.xml", null);
            myXmlTextWriter.Formatting = Formatting.Indented;
            myXmlTextWriter.WriteStartDocument(false);
            myXmlTextWriter.WriteComment("This is a comment");
            String SqlConStr = ConfigFactory.ReadConfig("MySqlCon");
            MySqlConnection myCon = new MySqlConnection(SqlConStr);
            myCon.Open();
            try
            {
                string sqlstr = "select *  from work";
                MySqlCommand command = new MySqlCommand(sqlstr, myCon);
                DataTable dt = new DataTable();
                MySqlDataAdapter sda = new MySqlDataAdapter(command);
                sda.Fill(dt);

                myXmlTextWriter.WriteStartElement("configSections");
                myXmlTextWriter.WriteStartElement("Works", null);

                for (int i = 0; i < dgv.Rows.Count; i++)
                {
                    string workid = dt.Rows[i].ItemArray[0].ToString();
                    string workname = dt.Rows[i].ItemArray[1].ToString();
                    string itemid = dt.Rows[i].ItemArray[2].ToString();
                    string itemName = "";

                    StringBuilder selectstr = new StringBuilder();
                    selectstr.Append("select Item  from item where ItemId in");
                    selectstr.Append("(" + itemid.ToString() + ")");
                    MySqlCommand cmd = new MySqlCommand(selectstr.ToString(), myCon);
                    DataTable dt_item = new DataTable();
                    MySqlDataAdapter sda_item = new MySqlDataAdapter(cmd);
                    sda_item.Fill(dt_item);
                    for (int j = 0; j < dt_item.Rows.Count; j++)
                    {
                        itemName = itemName + ',' + dt_item.Rows[j].ItemArray[0].ToString();
                    }
                    itemName = itemName.Substring(1, itemName.Length - 1);
                    myXmlTextWriter.WriteStartElement("Works", null);
                    myXmlTextWriter.WriteElementString("WorkId", null, workid);
                    myXmlTextWriter.WriteElementString("WorkName", null, workname);
                    myXmlTextWriter.WriteElementString("ItemId", null, itemid);
                    myXmlTextWriter.WriteElementString("ItemName", null, itemName);
                    myXmlTextWriter.WriteEndElement();
                }

                myXmlTextWriter.WriteEndElement();

                myXmlTextWriter.Flush();
                myXmlTextWriter.Close();
                Console.ReadLine();
                MessageBox.Show("成功生成XML文件!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch
            {
                MessageBox.Show("ERR");
            }

          

         //   CopyFileToPDA(@"swms_setting.xml", @"\Temp\swms_setting.xml");

            this.Close();

        }

生成的xml文件如下:

<?xml version="1.0" standalone="no"?>
<!--This is a comment-->
<configSections>
  <Works>
    <Works>
      <WorkId>001</WorkId>
      <WorkName>入荷予定</WorkName>
      <ItemId>0001,0002,0003,0004,0005,0006,0007,0008</ItemId>
      <ItemName>商品コード,予定数量,商品名称,実際数量,単位,作業開始日時,作業終了日時,場所</ItemName>
    </Works>
    <Works>
      <WorkId>002</WorkId>
      <WorkName>入荷検品</WorkName>
      <ItemId>0005,0006,0007,0008,0009</ItemId>
      <ItemName>単位,作業開始日時,作業終了日時,場所,結果</ItemName>
    </Works>
    <Works>
      <WorkId>003</WorkId>
      <WorkName>入庫</WorkName>
      <ItemId>0001,0002</ItemId>
      <ItemName>商品コード,予定数量</ItemName>
    </Works>
    <Works>
      <WorkId>004</WorkId>
      <WorkName>出荷予定</WorkName>
      <ItemId>0001,0002</ItemId>
      <ItemName>商品コード,予定数量</ItemName>
    </Works>
    <Works>
      <WorkId>005</WorkId>
      <WorkName>PICK</WorkName>
      <ItemId>0001,0002</ItemId>
      <ItemName>商品コード,予定数量</ItemName>
    </Works>
    <Works>
      <WorkId>006</WorkId>
      <WorkName>出荷照合</WorkName>
      <ItemId>0001,0002</ItemId>
      <ItemName>商品コード,予定数量</ItemName>
    </Works>
    <Works>
      <WorkId>007</WorkId>
      <WorkName>配送</WorkName>
      <ItemId>0001,0002</ItemId>
      <ItemName>商品コード,予定数量</ItemName>
    </Works>
    <Works>
      <WorkId>008</WorkId>
      <WorkName>棚卸</WorkName>
      <ItemId>0001,0002</ItemId>
      <ItemName>商品コード,予定数量</ItemName>
    </Works>
    <Works>
      <WorkId>009</WorkId>
      <WorkName>移動</WorkName>
      <ItemId>0001,0002</ItemId>
      <ItemName>商品コード,予定数量</ItemName>
    </Works>
    <Works>
      <WorkId>010</WorkId>
      <WorkName>入港</WorkName>
      <ItemId>0001,0002</ItemId>
      <ItemName>商品コード,予定数量</ItemName>
    </Works>
    <Works>
      <WorkId>011</WorkId>
      <WorkName>出港</WorkName>
      <ItemId>0001,0002</ItemId>
      <ItemName>商品コード,予定数量</ItemName>
    </Works>
    <Works>
      <WorkId>012</WorkId>
      <WorkName>バンニング</WorkName>
      <ItemId>0001,0002</ItemId>
      <ItemName>商品コード,予定数量</ItemName>
    </Works>
    <Works>
      <WorkId>013</WorkId>
      <WorkName>デバンニング</WorkName>
      <ItemId>0001,0002</ItemId>
      <ItemName>商品コード,予定数量</ItemName>
    </Works>
    <Works>
      <WorkId>014</WorkId>
      <WorkName>パッキング</WorkName>
      <ItemId>0001,0002</ItemId>
      <ItemName>商品コード,予定数量</ItemName>
    </Works>
    <Works>
      <WorkId>015</WorkId>
      <WorkName>加工</WorkName>
      <ItemId>0001,0002</ItemId>
      <ItemName>商品コード,予定数量</ItemName>
    </Works>
  </Works>
</configSections>

抱歉!评论已关闭.