Java 如何使用正则表达式从XML中提取标记名
我有一个我正在努力解决的问题。我有两种格式的xml请求Java 如何使用正则表达式从XML中提取标记名,java,regex,Java,Regex,我有一个我正在努力解决的问题。我有两种格式的xml请求 <?xml version="1.0" encoding="UTF-8"?> <Request xmlns="urn:x-facebook-com:DEF.plan.services.test"> <OneRequest> <page_number>1</page_number> <page_size>25</page_size>
<?xml version="1.0" encoding="UTF-8"?>
<Request xmlns="urn:x-facebook-com:DEF.plan.services.test">
<OneRequest>
<page_number>1</page_number>
<page_size>25</page_size>
<origin>TEST</origin>
<item_name/>
</OneRequest>
</Request>
在第一种类型上不是最好的it,但在第二种类型上完全搞砸了您基本上只需要正则表达式中的
\s
选项就可以实现这一点:
使用此正则表达式,并从标记名组中获取值:\s*
感谢否决票,但除非我知道你为什么否决票,否则我真的无法修复。请分享你的尝试。我也看到过关于xml解析器的帖子,但这似乎是一种过激行为——我不同意(但没有否决票)。正则表达式不是适合这项工作的工具。我会解析它并使用一个简单的XPath:
name(/*/*)
(对于XPath 1.0和2.0的示例。)@DanielHaley我可以尝试使用xml解析器,但有两件事1)我想要的是请求后的顶级标记2)请求非常大,这可能会影响性能,并且可能不会受到关注。但我还是会尝试一下,看看它是如何工作的——请求以字符串的形式出现。为了便于阅读,我在这里添加了新行。抱歉,我当时更新了链接。它看起来不好看,但很管用:)斯威特会看看的。我们可以用java做标记名吗?我是java中正则表达式的新手,不确定我以前是否见过这样的用法。我已经更新了问题,但它们不会是相同的。将有一个xmlns,但它可能因每个请求而异。为这一混乱道歉@Niklas
<?xml version="1.0" encoding="UTF-8"?>
<Request xmlns="urn:x-google-com:ABC.plan.services.plans">
<SecondRequest/>
</Request>
String[] requestTags = requestBody.split("</");
String requestName = requestTags[requestTags.length-2].replaceAll("[^a-zA-Z0-9]",