Java 用于在xml中添加命名空间前缀的正则表达式
有一点我很困惑,我有一个没有前缀的xml。 我试图通过正则表达式设置前缀。 我的xml如下所示:-Java 用于在xml中添加命名空间前缀的正则表达式,java,regex,preg-match,Java,Regex,Preg Match,有一点我很困惑,我有一个没有前缀的xml。 我试图通过正则表达式设置前缀。 我的xml如下所示:- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tier="http://xxxx"> <soapenv:Header/> <soapenv:Body> <tier:UnisysMB_Dispatch> <PayLo
<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>
WFM.MSM.SR
但我希望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>
WFM.MSM.SR
我试过这个
search regex=“(用$1s1:$2>
替换(
)。现在,这应该只能在IDE中正常工作
对于第一行,您必须使用另一个正则表达式。(
by$1 s1=“someUrl”>
)
我同意其他评论,正则表达式解析并不是从XML中提取信息的最佳方式。实际上,这不是解析,而是替换。这对于小示例应该是有效的
如果您需要一个适用于不同数量的WSDL的健壮解决方案,您应该切换到XML解析器/重写器。我认为一些XML工具支持您的现成问题。java中的
preg\u match
从何而来?不要使用正则表达式解析XML文件。我包括正则表达式,因为正则表达式是所有人的共同话题,所以任何有人可以帮我。很抱歉,这至少会有一些与“层:”和“soapenv:“文本,可能还有源代码标识符。但是,这确实说明了xml上的正则表达式并不好……在声称它不起作用之前,您应该先试用一下。它可以与基本快照一起使用……但让我用不同的值进行更多测试……非常感谢……Stefan