在 xml 中添加命名空间前缀的正则表达式

Regular expression to add namespace prefix in xml

我卡在一个 point.I 有一个 xml 没有前缀。 我正在尝试通过正则表达式放置前缀。 我的 xml 如下所示:-

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tier="http://xxxx">
<soapenv:Header/>
<soapenv:Body>
  <tier:UnisysMB_Dispatch>
     <PayLoad>
    <XMLTransaction>
        <Source_Identifier>WFM.MSM.SR</Source_Identifier>
        </XMLTransaction></PayLoad>
  </tier:UnisysMB_Dispatch>
</soapenv:Body>
</soapenv:Envelope>

但我想要 xml 每个标签 (s1) 都带有命名空间前缀,如下所示:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"   xmlns:tier="http://xxxx" s1="someurl">
<soapenv:Header/>
<soapenv:Body>
  <tier:UnisysMB_Dispatch>
     <s1:PayLoad>
    <s1:XMLTransaction>
        <s1:Source_Identifier>WFM.MSM.SR</s1:Source_Identifier>
        <s1:/XMLTransaction></s1:PayLoad>
  </tier:UnisysMB_Dispatch>
</soapenv:Body>
</soapenv:Envelope>

我试过了 搜索正则表达式 ="(<\/?)[a-z0-9]+"; 替换 =s1:"$1" 但不工作..

有什么帮助吗??

(</?)(\w+)> 替换为 s1:>。现在这应该只适用于你的 IDE.

对于第一行,您必须使用另一个正则表达式。 (<soapenv:Envelope.*?)> 来自 s1="someUrl">

我同意其他评论,正则表达式解析不是从 XML 中提取信息的最佳方式。其实这不是解析,而是替换。这应该适用于小例子。

如果您需要适用于可变数量的 WSDL 的可靠解决方案,您应该切换到 XML parser/rewriter。我认为一些 XML-工具开箱即用地支持您的问题。