gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 08:18:48 25 4
gpt4 key购买 nike

我陷入了困境。我有一个没有前缀的 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>

但我想要每个标签 (s1) 带有 namespace 前缀的 xml,如下所示:

<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+)>$1s1:$2> 。现在这应该只能在您的 IDE 中正常工作。

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

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

如果您需要一个适用于可变数量 WSDL 的强大解决方案,您应该切换到 XML 解析器/重写器。我认为某些 XML 工具可以立即支持您的问题。

关于java - 在 xml 中添加命名空间前缀的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29272143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com