XmlTextWriter的使用日记

本文介绍了如何使用C#中的XmlTextWriter类来生成特定格式的XML文件。通过两个实例演示了如何构造带有不同属性和层级的XML节点,适用于价格信息和结果反馈的数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用XmlTextWriter生成如下一个xml:

 

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Pkboy kind="site">
  <command name="price" object="game" password="asdfasdf">
    <game name="魔兽世界">
      <server name="魔兽服务器一号">
        <item name="金币" kind="gold" quantity="12" gross="0.5005" maxdollar="99" mindollar="88" rate="6.88" />
      </server>
    </game>
  </command>
</Pkboy>

 

使用的代码:

 

public static string GeneratePriceXml(PriceStruct ps, Encoding encode)
 {
            string xml = string.Empty;

            using (MemoryStream ms = new MemoryStream())
            {
                using (XmlTextWriter xtw = new XmlTextWriter(ms, encode))
                {
                    xtw.Formatting = Formatting.Indented;
                    //xtw.Indentation = 2;

                    xtw.WriteStartDocument(true);

                    //Pkboy node
                    xtw.WriteStartElement("Pkboy");
                    xtw.WriteAttributeString("kind", "site");
                    //command node
                    xtw.WriteStartElement("command");
                    xtw.WriteAttributeString("name", "price");
                    xtw.WriteAttributeString("object", "game");
                    xtw.WriteAttributeString("password", ps.password);

                    //game node
                    xtw.WriteStartElement("game");
                    xtw.WriteAttributeString("name", ps.gameName);

                    // server node
                    xtw.WriteStartElement("server");
                    xtw.WriteAttributeString("name", ps.serverName);

                    // item node
                    xtw.WriteStartElement("item");
                    xtw.WriteAttributeString("name", ps.itemName);
                    xtw.WriteAttributeString("kind", ps.itemKind);
                    xtw.WriteAttributeString("quantity", ps.quantity.ToString());
                    xtw.WriteAttributeString("gross", ps.gross.ToString());
                    xtw.WriteAttributeString("maxdollar", ps.maxDollar.ToString());
                    xtw.WriteAttributeString("mindollar", ps.minDollar.ToString());
                    xtw.WriteAttributeString("rate", ps.rate.ToString());

                    // colse item node
                    xtw.WriteEndElement();
                    // close server node
                    xtw.WriteEndElement();
                    // close game node
                    xtw.WriteEndElement();
                    // close command node
                    xtw.WriteEndElement();
                    // close pkboy node
                    xtw.WriteEndElement();
                    // close document
                    xtw.WriteEndDocument();

                    xtw.Flush();
                    xml = encode.GetString(ms.GetBuffer(), 0, (int)ms.Length);
                }               
            }
            return xml;
 }

 

产生xml 如下格式:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Pkboy kind="result">
  <result success="false">
    <data>this is result data</data>
    <error kind="DatabaseError">
      <message>数据库链接失败</message>
    </error>
  </result>
</Pkboy>

 

采用代码:

 

 

public static string GenerateResultXml(ResultStruct rs, Encoding encode)
 {
            string xml = string.Empty;

            using (MemoryStream ms = new MemoryStream())
            {
                using (XmlTextWriter xtw = new XmlTextWriter(ms, encode))
                {
                    xtw.Formatting = Formatting.Indented;

                    xtw.WriteStartDocument(true);

                    //Pkboy node
                    xtw.WriteStartElement("Pkboy");
                    xtw.WriteAttributeString("kind", "result");

                    //result node                    
                    xtw.WriteStartElement("result");
                    if (rs.success)
                    {
                        xtw.WriteAttributeString("success", "true");
                    }
                    else
                    {
                        xtw.WriteAttributeString("success", "false");
                    }

                    //data node
                    xtw.WriteStartElement("data");
                    xtw.WriteValue(rs.data);
                    xtw.WriteEndElement();

                    // error node
                    xtw.WriteStartElement("error");
                    xtw.WriteAttributeString("kind", Enum.GetName(typeof(ErrorKind), rs.errorKind));

                    // message node
                    xtw.WriteStartElement("message");
                    xtw.WriteValue(rs.errorMessage);
                    xtw.WriteEndElement();

                    // close error node
                    xtw.WriteEndElement();

                    // close result node
                    xtw.WriteEndElement();
                    
                    // close document
                    xtw.WriteEndDocument();

                    xtw.Flush();
                    xml = encode.GetString(ms.GetBuffer(), 0, (int)ms.Length);
                }
            }
            return xml;
        }

 

转载于:https://www.cnblogs.com/worldreason/archive/2008/07/30/1256258.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值