一般的xml都是有一个闭标记的<Store name="name1"></Store>,但是现在我想生成一个这个的
<?xml version="1.0" encoding="UTF-8"?><Store name="name1"/> ,XmlDocument里有这样的方法么?不要手工拼接。xml闭标记

解决方案 »

  1.   

    生成后再用System.IO.File读取,替换</Store>保存
      

  2.   

    好吧,我测试了一下才知道,XmlDocument默认就会生成这种类型的元素,只要当前节点没有下一级的时候,那么他默认生成的就是没有闭比较标记的。
    private static void WriteXml(string xmlFilePath)
            {
                //初始化一个xml实例
                XmlDocument myXmlDoc = new XmlDocument();
                //创建xml的根节点
                XmlElement rootElement = myXmlDoc.CreateElement("Store");
                //将根节点加入到xml文件中(AppendChild)
                rootElement.SetAttribute("Name","这不是真的");
                rootElement.SetAttribute("Address", "有可能是真的");
                rootElement.SetAttribute("Tel", "真是真的?");
                myXmlDoc.AppendChild(rootElement);            ////初始化第一层的第一个子节点
                //XmlElement firstLevelElement1 = myXmlDoc.CreateElement("Computer");
                ////将第一层的第一个子节点加入到根节点下
                //rootElement.AppendChild(firstLevelElement1);            //将xml文件保存到指定的路径下
                myXmlDoc.Save(xmlFilePath);
            }
    生成的xml为
    <?xml version="1.0"?>
    <Store Tel="真是真的?" Address="有可能是真的" Name="这不是真的"/>
      

  3.   

    有的序列化可以自动生成XML对象
     public class ConsumeMessageTable
        {
            public string Code { get; set; }        public string Message { get; set; }        public string MerchantNo { get; set; }//机构内码
            public string AbbrName { get; set; }// 机构简称
            public string OperatorReName { get; set; }//登录人真实姓名
            public string CategoryCode { get; set; }//机构类型
            /// <summary>
            /// 提现单号
            /// </summary>
            public string ItemNo { get; set; }
     
        }实体对象
       #region 序列化XML文件
            /// <summary>
            /// 序列化XML文件
            /// </summary>
            /// <param name="type">类型</param>
            /// <param name="obj">对象</param>
            /// <returns></returns>
            public static string Serializer(Type type, object obj)
            {
                MemoryStream Stream = new MemoryStream();
                //创建序列化对象
                XmlSerializer xml = new XmlSerializer(type);
                try
                {
                    //序列化对象
                    xml.Serialize(Stream, obj);
                }
                catch (InvalidOperationException ee)
                {
                    throw ee;
                }
                Stream.Position = 0;
                StreamReader sr = new StreamReader(Stream);
                string str = sr.ReadToEnd();
                return str;
            }
            /// <summary>
            /// 序列化一个对象生成xml文件
            /// </summary>
            /// <param name="msg"></param>
            /// <returns></returns>
            public static string Serializer(object msg)
            {
                Type type= msg.GetType();
                return Serializer(type, msg);
            }
            #endregion自动生成
    <?xml version="1.0"?>
    <ConsumeMessageTable xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Code>EncryptTextError</Code>
      <Message>验证消费加密数据失败!</Message>
    </ConsumeMessageTable>