我有一个正则表达式从XML中删除xmlns引用.当匹配标记时它可以正常工作,但如果xmlns引用位于单个标记中,它也会删除"/".
这是正则表达式:
"<(.*?) xmlns[:=].*?>", "<$1>"
Run Code Online (Sandbox Code Playgroud)
当我在这行xml上使用正则表达式时:
<ns22:someTagName xmlns:ns22="http://exampledatatypes.com"></ns22:someTagName>
Run Code Online (Sandbox Code Playgroud)
我得到了我想要的东西:
<ns22:someTagName></ns22:someTagName>
Run Code Online (Sandbox Code Playgroud)
当我在这行xml上使用正则表达式时:
<ns22:someTagName xmlns:ns22="http://exampledatatypes.com"/>
Run Code Online (Sandbox Code Playgroud)
我得到这个无效的XML:
<ns22:someTagName>
Run Code Online (Sandbox Code Playgroud)
它删除了引用罚款,但它用"/"结束.
谢谢你的帮助,斯科特
不是试图从XML中保留您需要的内容,而是最好定位要删除的内容.
此表达式仅针对名称空间本身:
\sxmlns[^"]+"[^"]+"
不幸的是我不知道LotusScript所以我不能给你一个如何使用它的代码示例,但你需要做的就像这样的psuedocode:
result = regex.replace(yourString, '\sxmlns[^"]+"[^"]+"', '')
Run Code Online (Sandbox Code Playgroud)
你将在这里做的是用空字符串替换所有匹配(有效地删除它们).这将适用于封闭和自闭合的XML标记,如果标记根本没有命名空间,它也可以工作.
编辑:这是一个功能齐全的Python示例:
>>> from re import sub
>>> pattern = r'\sxmlns[^"]+"[^"]+"'
>>> closed = r'<ns22:someTagName xmlns:ns22="http://exampledatatypes.com"></ns22:someTagName>'
>>> sub(pattern, '', closed)
'<ns22:someTagName></ns22:someTagName>'
>>> selfclosed = r'<ns22:someTagName xmlns:ns22="http://exampledatatypes.com"/>'
>>> sub(pattern, '', selfclosed)
'<ns22:someTagName/>'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10161 次 |
| 最近记录: |