我有一个巨大的XML文档,我想要清理它,因为文本编辑器已经添加了wordwrap,无缘无故。
所以部分XML代码如下所示:
<ProfileFolder name="I/O">
<Allowed display="I/O" value="I/O"/>
<Allowed display="I/O, I/O connector"
value="4pin I/O connector"/>
<Allowed display="I/O, I/O connector"
value="6pin I/O connector"/>
<Allowed display="I/O, I/O connector"
value="configurable I/O connectors"/>
<Allowed display="I/O, I/O connector"
value="fixed I/O connectors"/>
<Allowed value="pin numbers above"/>
<Allowed value="pin numbers below"/>
<Allowed display="I/O, I/O connector" value="relay ports"/>
<Allowed display="VoIP" value="call button"/>
</ProfileFolder>
我想删除标签内的换行符,而不是:
<Allowed display="I/O, I/O connector"
value="fixed I/O connectors"/>
我想:
<Allowed display="I/O, I/O connector" value="fixed I/O connectors"/>
我真的很讨厌RegEx,尽管它非常强大,但我无法弄清楚RegEx代码的正确格式。
我试过了:
<(.*)\n(.*)?\/>
和
(?<=>)(.*)\n(.*)\/>
(哪个最接近,但与我想要的相反):)
目前正在使用Sublime。
答案 0 :(得分:0)
这么简单:
\n(?!<)
应该适用于您的情况。此正则表达式表示未跟随<
字符的换行符。
你可以找到这个并用一个空格替换。
答案 1 :(得分:0)
使用XML Parser:
$xml = simplexml_load_string( $xml );
echo $xml->asXML();
将输出:
(...)
<Allowed display="I/O, I/O connector" value="4pin I/O connector"/>
<Allowed display="I/O, I/O connector" value="6pin I/O connector"/>
(...)
SimpleXML
默认删除标记声明中的所有换行符。
答案 2 :(得分:0)
这也可行
(?<!>)\n
正则表达式解释
(?<!>)\n #Assure that the line does not end with > followed by a \n.
因此,如果该行满足上述条件,则合并行