我被困在某一点。我有一个没有前缀的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>
我试过这个 search regex =“(&lt; \ /?)[a-z0-9] +”; replace = s1:“$ 1” 但没有工作..
任何帮助吗??
答案 0 :(得分:1)
将(</?)(\w+)>
替换为$1s1:$2>
。现在这应该只能在IDE中正常工作。
对于第一行,您必须使用另一个正则表达式。 (<soapenv:Envelope.*?)>
$1 s1="someUrl">
。{/ p>
我同意其他评论,正则表达式解析不是从XML中提取信息的最佳方法。实际上这不是解析,而是替换。这应该适用于小例子。
如果您需要适用于可变数量WSDL的强大解决方案,则应切换到XML解析器/重写器。我认为一些XML-Tools可以直接支持你的问题。