我有很少的XML文件,并且有些用户在中间添加了额外的空格(如元素标记或文本标记),并且比较多个版本的文件变得非常困难。sed:从文本中间删除空格
实例(xml文件)
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author >
<title>XML Developer's Guide </title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book id="bk102" >
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description>
</book>
</catalog>
正如你可以看到上面的例子代码,笔者的元素标签和标题的文本节点中的第一本书元素有多余的空格。同样,第二书籍元素的元素标签具有额外的空间。
我想要一个正则表达式来搜索这些类型的空白(多于1个相邻的空格),但我不希望前导空白。如果我不留下主要的空格(起始行),并将其替换为单个空格,则缩进将会丢失。
我可以通过一些方法来处理这个问题(比如先删除所有的double +空格,然后在文件上做一个xmllint格式),但是如果有人能够给我一个reg中间空格线。
我试过^,\ s和^ \ s的组合,但我似乎无法得到解决方案。所以如果有人可以提出建议,那将会非常有帮助。 (文本节点的多个空格是不正确的值按我们的项目的设计,以便消除他们不会造成任何不良影响。)
你真的想要什么,不管你是否意识到,都是一个正确的XML解析/处理工具集,而不是一个正则表达式引擎... – twalberg