XML入库后空白字符丢失问题

最近项目上在做电子病历,使用的是第三方的电子病历组件,该病历组件是利用XML来组织数据的。界面上渲染出来的效果如下图:

XML渲染后的界面

对应的后台数据(已做简化处理)是如下XML格式的,其中的空格部分是用 <Text> </Text>来标记的。

  <XTextBody><Text>姓名:</Text><Text>  </Text><BackgroundText>姓名</BackgroundText><Text>  </Text><Text> 年龄:</Text><Text>  </Text><BackgroundText>年龄</BackgroundText><Text>  </Text><Text> 性别:</Text><Text>  </Text><BackgroundText>性别</BackgroundText><Text>  </Text><Text>出生日期:</Text><Text>  </Text><BackgroundText>年</BackgroundText><Text>  </Text><Text>年</Text><Text>  </Text><BackgroundText>月</BackgroundText><Text>  </Text><Text>月</Text><Text>  </Text><BackgroundText>日</BackgroundText><Text>  </Text><Text>日</Text><Text>  </Text>
</XTextBody>

在数据库(SQLServer)中,存储该文本的字段类型是XML类型。

当我们把这一段文本存入数据库并再次加载时,发现空格丢失了

渲染后的效果也就乱掉了,文字都挤到了一起,如下图:

 

空格丢失,文本挤在一起了

经调查发现,原来是xml:space搞的鬼。

xml:space 属性是一个 XML 定义的属性,用于声明对象元素中重要的空格处理行为。 它有两个可选值:

  • default:该属性的默认值,XML解析后将自动删除元素中空格。<text> </text>处理后变成<text />
  • preserve:保留元素中的空格。<text> </text>处理后保持不变<text> </text>

如果XML中缺少xml:space这个属性,将会同default行为一样。

知道原因之后,解决起来也就容易了。由于XML是在第三方组件中生成的,短时间内无法修复,那我们就在自己的程序中做处理。在将数据保存入库之前,给根节点加上xml:space="preserve"属性就好了。代码如下:

//保留xml中空白字符var doc = new XmlDocument { PreserveWhitespace = true };doc.LoadXml(xml);doc.DocumentElement.SetAttribute("xml:space", "preserve");

这里再说一个坑,构建XmlDocument对象时,一定要设置属性PreserveWhitespace = true,否则LoadXml后空格又会自动消失啦。因为XmlDocument和数据库里操作是一样的,都是默认缺省xml:space处理的,估计是为了节省空间吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/353589.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

前端入门学习

封装axios axios的基础使用 axios基础使用方法&#xff1a; axios.create({config}) //创建axios实例 axios.get(url,{config}) //get请求 axios.post(url, data,{config}) //post请求 axios.interceptors.request.use() // 请求拦截器 axios.interce…

赛尔号什么时候支持html5,赛尔号:这几只精灵必须拥有!无关强度,只因经典情怀!...

赛尔号这款游戏有着比较老的资历&#xff0c;很多玩家从还是小学生的时候就开始玩起了这个游戏&#xff0c;然后便一直玩到大学&#xff0c;甚至毕业工作。因此&#xff0c;赛尔号不仅仅是一款简单的网页游戏&#xff0c;更是一款充满了情怀的游戏。 那么&#xff0c;接下来的小…

赛尔号星球大战服务器维修,赛尔号星球大战11月29日更新公告

赛尔号星球大战11月29日新增了什么玩法&#xff1f;服务器的维护时间是多少&#xff1f;来看看9k9k小编rayxx带来的赛尔号星球大战11月29日更新公告。 11月29号下午15点至17点更新公告: 1、精灵 新增了两种精灵:亚兰洛(火系)&#xff0c;星吉拉(普通系)。 通过有缘人进行精灵繁…

4399知名游戏-赛尔号图鉴的爬取

4399知名游戏-赛尔号图鉴的爬取 面向对象&#xff1a; 1.疫情居家无聊之人 2.python略懂一点点就行 头文件引入&#xff1a; 如果没有下面的头文件不要慌&#xff0c;打开你的python终端pip install 包名即可 from bs4 import BeautifulSoup import requests import json …

容器技术 — Cgroups 与 Namespaces 支撑实现的操作系统虚拟化

目录 文章目录 目录操作系统虚拟化&#xff08;容器技术&#xff09;的发展历程ChrootCgroupsCgroup SubsystemsCgroup FilesystemCgroup HierarchyCgroups 的操作规则Cgroups 的代码实现 NamespacesUTS namespacePID namespaceIPC namespaceMount namespaceNetwork namespaceU…

使用geoserver发布shp和tiff数据

一、安装并启动geoserver服务 1.1 下载geoserver 进入官网下载 由于geoserver是使用Java语言开发的&#xff0c;所以运行需要java的环境&#xff0c;不同geoserver的版本号对java的版本要求不同&#xff0c;所以选择版本时需注意对应java的版本要求&#xff0c;由于我本地安…

javascript回到顶部

如图&#xff1a; 数字从1到100&#xff0c;滚动后点击章鱼哥便可以回到顶部。 HTML内容不多只有一个a标签内容有一个图片和100个h1标签&#xff0c;但要看清楚是给它设置好了id的&#xff0c;当然不设置id也行但有时候对小白不太友好。 为了使点击图片更加贴合整个页面所以需要…

一段简单的网页返回顶部和返回底部代码(html+css+jquery)

最近用到了返回顶部和底部功能&#xff0c;找了找&#xff0c;查了查&#xff0c;改了改&#xff0c;最终实现效果大概这样子。 以下是相关代码&#xff1a; html部分&#xff1a; <div id"backtotop" class"backtotop"><div class"bt-box…

网页回到顶部的js代码实现

背景 还是给老板写他的个人主页&#xff0c;用到了一个小功能&#xff0c;随手记录下 代码 控制样式的 css 代码如下 /* 回到顶部实现代码的css */ .back-to-top {display: none;/* 默认是隐藏的&#xff0c;这样在第一屏才不显示 */position: fixed;/* 位置是固定的 */bott…

HTML5 回到顶部

图片&#xff1a; html <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>回到顶部</title><link rel"stylesheet" type"text/css" href"css/try.css" /><script src"j…

JS返回顶部代码

2019独角兽企业重金招聘Python工程师标准>>> <!-- 回到顶部 --> <div><span style"font-size:14px"><p id"back-to-top"><a href"#top"><span><img src"public/images/top.jpg" ti…

URL 地址栏能玩出什么新花样?这位歪果程序员小哥给你开开脑洞!

前言 在现在一些互联网营销号的传播素材中&#xff0c;程序员往往会被塑造成一个邋遢、木讷、秃头、低情商的形象&#xff0c;以借此博得普通群众的眼球&#xff0c;吸引他人注意力。 前阵子&#xff0c;暴走漫画发布的一个视频《创造1024》&#xff0c;里面便有多个情节涉及到…

用Python让蔡徐坤在我的命令行里打篮球!| 附完整代码

作者自称是一个经常逛 B 站的肥宅。最近B站上流行的视频素材除了“换脸”&#xff0c;其次就要属“蔡xx打球”视频了。有模仿的、对比的、手绘的... ...更过分的是&#xff0c;竟然有人在命令行输出了他的打球视频。不过&#xff0c;视频中的动画好像是用某个软件生成的 txt 文…

一行代码“黑”掉任意网站

文章目录 只需一行代码&#xff0c;轻轻一点就可以把任意网站变成暗黑模式。 首先我们先做一个实验&#xff0c;在任意网站中&#xff0c;打开浏览器开发者工具(F12)&#xff0c;在 C1onsole 控制台输入如下代码并回车&#xff1a; document.documentElement.style.filterinv…

用Python让蔡徐坤在我的命令行里打篮球!|附完整代码

点击上方↑↑↑蓝字关注我们~ 「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑ 来源 | 01二进制&#xff08;ID:gh_d1999add1857&#xff09; 编辑 | Jane 【导语】作者自称是一个经常逛 B 站的肥宅。最近 B 站上流行的视频素材除了“换脸”&#xff0c;其次就…

自动化测试,B、C接口要将A接口返回的参数作为入参,有哪些方法?

在进行自动化测试时&#xff0c;如果需要将A接口返回的参数作为B、C接口的入参&#xff0c;可以通过以下几种方法实现&#xff1a; 如果你想学习自动化测试&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B站百万播放全网第一的自动化测试教程&#xff0c;同…

直播带货APP小程序系统开发功能有哪些?

直播带货APP小程序系统开发功能有哪些&#xff1f; 1、直播带货&#xff1a;主播一边带货一边直播间活跃气氛&#xff0c;直观地了解产品&#xff0c;下单的概率会更高。还集有观看、打赏、购物、分享于一体。 2、短视频带货&#xff1a;短视频种草&#xff0c;利…

KCNScrew for Mac(mac序列号工具)

KCNScrew for Mac是一款序列号工具&#xff0c;是一款十分简单好用的序列号查找工具。该软件的数据每个月都会更新&#xff0c;包含将近上千款软件的序列号提供给大家。如果你还在苦恼于软件因为没有序列号而不能正常使用到话&#xff0c;想要查看软件序列号的朋友欢迎&#xf…

CuteFTP,8uftp cuteftp

CuteFTP&#xff0c;FTP工具之一&#xff0c;其传输速度比较快&#xff0c;但有时对于一些教育FTP 站点却无法连接。我在进行ftp工具查找时&#xff0c;还发现了这么一款软件&#xff1a;IIS7服务器管理工具。 作为IIS7服务器管理工具&#xff0c;它可以对ftp站点进行批量管理…

Win10下SCP命令免密码上传、下载工程师服务器上的文件

【1】本地win10操作步骤 1&#xff09;在本地win10系统打开命令行工具&#xff08;winr&#xff09; 2&#xff09;执行命令&#xff1a;ssh-keygen -t rsa 3&#xff09;提示输入保存路径&#xff0c;直接回车&#xff0c;默认即可。 4&#xff09;提示输入密码&#xff0c;因…