创建Java正则表达式模式以匹配XML中的字符串
我试图创建正则表达式模式来匹配XML文本中的字符串。例如: 要匹配的字符串:PLP não seráfechada XML文本:创建Java正则表达式模式以匹配XML中的字符串,java,regex,xml,Java,Regex,Xml,我试图创建正则表达式模式来匹配XML文本中的字符串。例如: 要匹配的字符串:PLP não seráfechada XML文本: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <soap:Fault> <faultcode>soap:Server</faultcode&
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>A PLP não será fechada, o(s) objeto(s) [PX44258394BR, PX44258388BR, PX44258382BR] já estão vinculados em outra PLP!</faultstring>
<detail>
<ns2:SigepClienteException
xmlns:ns2="http://cliente.bean.master.sigep.bsb.correios.com.br/">A PLP não será fechada, o(s) objeto(s) [PX44258394BR, PX44258388BR, PX44258382BR] já estão vinculados em outra PLP!
</ns2:SigepClienteException>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
true
请帮助。您只需使用
字符串即可完成。包含:
class Main {
public static void main(String[] args) {
String xml="<soap:Envelope\n" +
" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" +
" <soap:Body>\n" +
" <soap:Fault>\n" +
" <faultcode>soap:Server</faultcode>\n" +
" <faultstring>A PLP não será fechada, o(s) objeto(s) [PX44258394BR, PX44258388BR, PX44258382BR] já estão vinculados em outra PLP!</faultstring>\n" +
" <detail>\n" +
" <ns2:SigepClienteException\n" +
" xmlns:ns2=\"http://cliente.bean.master.sigep.bsb.correios.com.br/\">A PLP não será fechada, o(s) objeto(s) [PX44258394BR, PX44258388BR, PX44258382BR] já estão vinculados em outra PLP!\n" +
" </ns2:SigepClienteException>\n" +
" </detail>\n" +
" </soap:Fault>\n" +
" </soap:Body>\n" +
"</soap:Envelope>";
String searchStr="A PLP não será fechada";
System.out.println(xml.contains(searchStr));
}
}
几乎不可能制作一个能够在X/HTML中正确查找内容的正则表达式。为此,您确实需要一个解析器。Java有一个内置的,你应该使用它,“在一个字符串对象中”和什么有什么关系?解析器可以很好地读取字符串。这就是为什么不能使用regex解析HTML/XML:用外行术语的正式解释不是这个问题的重复。这不是一个真正的问题,这是一篇基于观点的论文,不应该用来隐藏html/XML或任何SGML的正则表达式解析。如果这是真的,那么超过100000个问题也需要隐藏起来@t尽管复制品的合适性仍有争议,但你的问题中并不清楚你到底想要发生什么。请澄清你想做什么。例如,对于正则表达式,您需要知道要匹配的内容,但也需要知道要拒绝的内容。您还需要准确地指定您真正想要匹配的XML的哪一部分,以及一旦匹配完成,您将如何处理匹配。现在,如果包含您感兴趣的字符串,那么您似乎正在匹配整个XML内容。这样做只会告诉您字符串是否存在,直接搜索静态字符串比使用正则表达式更有效。
true