我喜欢XML
<A>
<B>
<C>
Hello World
</C>
</B>
</A>
我想替换每个标记中的起始标记"<" with "<ns:"
,从而产生以下XML
<ns:A>
<ns:B>
<ns:C>
Hello World
</ns:C>
</ns:B>
</ns:A>
我应该在文本编辑器中使用哪些正则表达式替换并包含namesapace
我试图使用正则表达式[&lt;] [^ /],但它也选择了我不想替换的起始标记的第一个字符。
注意:在支持正则表达式替换的编辑器中,我有上述手动编辑的要求。我不打算以编程方式执行上述任务。请求的输出XML片段是完整XML的内部部分,因此未提及名称空间URI
答案 0 :(得分:2)
使用此正则表达式替换:
regex: (</?)
replacement: $1ns:
答案 1 :(得分:1)
cat tf
<A>
<B>
<C>
Hello World
</C>
</B>
</A>
[user@serv:~/] cat tf | sed 's/\w*<\([\/]*\)/<\1ns:/'
<ns:A>
<ns:B>
<ns:C>
Hello World
</ns:C>
</ns:B>
</ns:A>
答案 2 :(得分:0)
您请求的输出不是格式良好的XML(它具有未声明的命名空间前缀),并且您给出的正则表达式将产生该输出,这是无用的,因为没有期望XML的工具将能够处理它。这是使用正则表达式处理XML的原因之一。每次都使用XML处理工具,例如XSLT。