C# 生成XML空元素/空节点自动换行解决方案
使用DataSet可以直接输出XML,并可指定是否带有Schema:
ds.WriteXml(XMLFile,XmlWriteMode.WriteSchema )
不过,这样将不会输出值为Null的字段,如:
你可能希望结果是这样:
<a></a>
<b></b>
<c></c>
但结果为:
<a></a>
<b></b>
c没有输出在XML文件中,其实我觉得这样更合理,否则,如何区分null和""呢?如果希望输出c,那只能通过XmlDocument自己写了:
//初始化一个xml实例
XmlDocument XmlDoc = new XmlDocument();
XmlNode xmlnode = XmlDoc.CreateNode(XmlNodeType.XmlDeclaration, "", "");
XmlDoc.AppendChild(xmlnode);
//创建xml的根节点
XmlElement rootElement = XmlDoc.CreateElement("Rows");
//将根节点加入到xml文件中(AppendChild)
XmlDoc.AppendChild(rootElement); foreach (DataRow dr in ds.Tables[].Rows)
{
XmlElement xmlRow = XmlDoc.CreateElement("Row");
rootElement.AppendChild(xmlRow);
foreach (DataColumn col in ds.Tables[].Columns)
{
XmlElement xmlCol = XmlDoc.CreateElement(col.ColumnName);
xmlCol.InnerText = dr[col].ToString();
xmlRow.AppendChild(xmlCol);
}
} XmlDoc.Save(file);
空节点显示出来了,但是,另一个问题出现了,空节点换行了,成了这样:
<a></a>
<b></b>
<c>
</c>
虽然这样也符合XML标准,使用C#也很容易可以读取该XML,但是对于一些有审美洁癖的人和已经写好的XML导入程序来说,总希望能改进一下,将空元素放到一行里边去。有人说使用XmlTextWriter 的Formatting,即:
using (XmlTextWriter xtw = new XmlTextWriter(file, null))
{
xtw.Formatting = Formatting.None;
XmlDoc.Save(xtw);
}
但是这样一来,XML里所有内容都不换行全连在一起了,可读性更差。实际上值为NULL或者""时,不要给InnerText赋值就行了:
if (dr[col].ToString() != null && dr[col].ToString() != "")
{
xmlCol.InnerText = dr[col].ToString();
}
输出:
<a></a>
<b></b>
<c/>
C# 生成XML空元素/空节点自动换行解决方案的更多相关文章
- PHP中的生成XML文件的4种方法分享
生成如下XML串 Xml代码 <?xml version="1.0" encoding="utf-8"?> <article> < ...
- Winform中对xml文件进行保存时空白节点自动换行问题的解决
场景 Winform中自定义xml配置文件后对节点进行读取与写入: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10053213 ...
- HTML 空元素(转)
HTML 空元素 在 HTML 中,通常在一个空元素上使用一个闭标签是无效的.例如,<input type="text"> </input> 的闭标签是无效 ...
- HTML空元素
什么是空元素? 首先空元素下是没有子级节点和内容的.然后空元素是在开始标签中关闭的,也就是说空元素没有闭合标签的. 在HTML中的空元素有以下几个: <area> <base> ...
- C#程序中:如何删除xml文件中的节点、元素。
C#中动态的清理xml文件中的垃圾信息是程序员必会的哦.这就像数据库一样,不会清理数据怎么可以呢?其实xml文件就可以用作一个小的数据库,存储一些简单的信息.所以,用C#程序实现xml文件的增.删.改 ...
- html行内元素,块元素,空元素
行内元素:img span input a b br lable ; 块元素:dl dt dd div form table li ol ul li h1- ...
- 解析xml,返回第一级元素键值对。如果第一级元素有子节点,则此节点的值是子节点的xml数据。
/** 转换成XML格式字符串 **/ public static String doXMLStr(Map<String, String> map) { StringBuffer xml_ ...
- Java、Linux、Win 快速生成指定大小的空文件
Linux dd 命令: dd if=/dev/zero of=<fileName> bs=<一次复制的大小> count=<复制的次数> 生成 50 MB 的空文 ...
- c#删除 list中的元素和怎么去除空元素
; i >= ; i--) { if (list[i].NO == item.NO) { list.RemoveAt(i); } } public void RemoveItemFromList ...
随机推荐
- 分享一个漂亮的ASP.NET MVC黑色界面框架
插件应用架构概述 基于LCLFramework插件框架的应用由以下三个部分构成: (1)主程序:针对特定应用环境(Web.WinForm等应用环境),加载启动插件,获取插件入口,运行入口程序. (2) ...
- C++读取mysql中utf8mb4编码表数据乱码问题及UTF8转GBK编码
数据库编码为utf8,但是由于某些表的一些字段存储了emoji字符,表采用了utf8mb4编码,默认情况下在C++代码中读出的中文字段值都变成了乱码. 解决方法为,在进行数据库查询前,在C++中执行一 ...
- mvc edmx 的config文件
<?xml version="1.0" encoding="utf-8"?> <configuration> <connectio ...
- .NET 程序在 Windows XP 下调用 SHA512CryptoServiceProvider 方法报 PlatformNotSupportedException 异常
转自:http://stackoverflow.com/questions/1293905/sha256cryptoserviceprovider-and-related-possible-to-us ...
- android 内置视频目录
在做引导界面的时候有一个视频文件, 把它放在res/raw目录下面. 引用方法 如下: videoView = (VideoView) findViewById(R.id.video_view); v ...
- Tomcat and solr 环境配置
Tomcat and solr tomcat 安装 下载安装tomcat8.0 http://tomcat.apache.org/download-80.cgi wget http://apache. ...
- Versions 出现 SVN Working Copy xxx locked
Versions处于选中状态,Finder的导航栏就是Versions的导航栏,如下图,Action - Cleanup...,就可以解锁了
- Eplan 2D安装版布局,部件、端子竖放
部件竖放,不是通过变量的选择实现,而是通过设置实现的,具体设置在: 选项-设置-用户-2D安装板布局: 部件方向-更改为 垂直 部件放置-旋转角度-更改为90° 这样在连续放置部件的时候就变为竖放了, ...
- Win8.1 Metro应用无法联网终极解决方法
Win8.1 Metro应用无法联网终极解决方法: 一.删除注册表中:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\WinSock2\Par ...
- .woff HTTP GET 404 (Not Found)
原因:IIS没有添加woff字体的MIME类型,导致HTTP请求404 Not Found错误 解决办法: 1.在web.config中配置 <system.webServer> < ...