c# 如何在XML文件中生成空元素的问题

时间:2022-03-03 10:12:51
我在用c#开发的程序中要生成XML文件,XML文件生成后缺省的空元素在XML文件中是如下方式存储的,比如
<DATA>
</DATA>
但我们要求对空元素的存储不能换行(没办法这是要求),必须在同一行现实,比如
<DATA></DATA>
或者
</DATA>
这种方式也行,我不知道该如何设置空元素的文件存储方式,请大家指点下

12 个解决方案

#1


十一快乐!

#2


string fileName = "Books.xml";   
XmlTextWriter writer = new XmlTextWriter(fileName, null);   

writer.Formatting = Formatting.Indented;   
writer.Indentation = 6;   

writer.WriteStartDocument();   

writer.WriteStartElement("Books");   

writer.WriteStartElement("Book");   
writer.WriteElementString("Title", "");   
writer.WriteElementString("Author", "amandag");   
writer.WriteStartElement("Price");   
writer.WriteAttributeString("Unit", "¥");   
writer.WriteValue("128.00");   
writer.WriteEndElement();   
writer.WriteEndElement();   

writer.WriteEndElement();   
writer.WriteEndDocument();   

writer.Close(); 


生成的xml文件是这样的
<?xml version="1.0"?>
<Books>
      <Book>
             <Title />
            <Author>amandag</Author>
            <Price Unit="¥">128.00</Price>
      </Book>
</Books>

不知能否满足楼主要求

#3


up

#4


非常感谢amandag ,如果能生成
<Title></Title>
这种不换行格式的就更好:)非常感谢

#5


如果你是用程序生成的节点应该是不行的,程序会自动控制换行的,或者直接是<节点名/>这样的空节点
你要是有个xml文件做的模板的话,可以在程序中复制你的模板,这样就可以达到你要的效果

#6


求救,没弄明白啊!我如何才能实现  空值的时候 标签是全的呢<title></title>  而不是只有末尾标签

#7


我是用程序生成的,直接打印出来的

#8



            XmlDocument xml = new XmlDocument();
            XmlDeclaration dec = xml.CreateXmlDeclaration("1.0", "utf-8", null);
            XmlElement root = xml.CreateElement("xml");
            XmlElement data = null;
            for (int i = 0; i < 10; i++)
            {
                data = xml.CreateElement("data");
                data.InnerText = i.ToString();
                root.AppendChild(data);
            }
            for (int i = 0; i < 3; i++)
            {
                data = xml.CreateElement("title");
                data.InnerText = " ";
                root.AppendChild(data);
            }
            xml.AppendChild(root);
            xml.Save("D:\\data.xml");

#9


你不能用.net方法生成xml节点,直接在txt文件中写入字符串"<DATA></DATA>",就行了。

#10


LZ,在XML表示里<Title />  与 <title></title>是等价的,只是简写而已,别人一看就知道,你为什么非要后面那种方式呢。。。。

#11


08年的贴子!

#12


引用 10 楼 sdl2005lyx 的回复:
LZ,在XML表示里<Title /> 与 <title></title>是等价的,只是简写而已,别人一看就知道,你为什么非要后面那种方式呢。。。。


10楼很对!

08年的…………………………

#1


十一快乐!

#2


string fileName = "Books.xml";   
XmlTextWriter writer = new XmlTextWriter(fileName, null);   

writer.Formatting = Formatting.Indented;   
writer.Indentation = 6;   

writer.WriteStartDocument();   

writer.WriteStartElement("Books");   

writer.WriteStartElement("Book");   
writer.WriteElementString("Title", "");   
writer.WriteElementString("Author", "amandag");   
writer.WriteStartElement("Price");   
writer.WriteAttributeString("Unit", "¥");   
writer.WriteValue("128.00");   
writer.WriteEndElement();   
writer.WriteEndElement();   

writer.WriteEndElement();   
writer.WriteEndDocument();   

writer.Close(); 


生成的xml文件是这样的
<?xml version="1.0"?>
<Books>
      <Book>
             <Title />
            <Author>amandag</Author>
            <Price Unit="¥">128.00</Price>
      </Book>
</Books>

不知能否满足楼主要求

#3


up

#4


非常感谢amandag ,如果能生成
<Title></Title>
这种不换行格式的就更好:)非常感谢

#5


如果你是用程序生成的节点应该是不行的,程序会自动控制换行的,或者直接是<节点名/>这样的空节点
你要是有个xml文件做的模板的话,可以在程序中复制你的模板,这样就可以达到你要的效果

#6


求救,没弄明白啊!我如何才能实现  空值的时候 标签是全的呢<title></title>  而不是只有末尾标签

#7


我是用程序生成的,直接打印出来的

#8



            XmlDocument xml = new XmlDocument();
            XmlDeclaration dec = xml.CreateXmlDeclaration("1.0", "utf-8", null);
            XmlElement root = xml.CreateElement("xml");
            XmlElement data = null;
            for (int i = 0; i < 10; i++)
            {
                data = xml.CreateElement("data");
                data.InnerText = i.ToString();
                root.AppendChild(data);
            }
            for (int i = 0; i < 3; i++)
            {
                data = xml.CreateElement("title");
                data.InnerText = " ";
                root.AppendChild(data);
            }
            xml.AppendChild(root);
            xml.Save("D:\\data.xml");

#9


你不能用.net方法生成xml节点,直接在txt文件中写入字符串"<DATA></DATA>",就行了。

#10


LZ,在XML表示里<Title />  与 <title></title>是等价的,只是简写而已,别人一看就知道,你为什么非要后面那种方式呢。。。。

#11


08年的贴子!

#12


引用 10 楼 sdl2005lyx 的回复:
LZ,在XML表示里<Title /> 与 <title></title>是等价的,只是简写而已,别人一看就知道,你为什么非要后面那种方式呢。。。。


10楼很对!

08年的…………………………