Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用正则表达式从XML中提取标记名_Java_Regex - Fatal编程技术网

Java 如何使用正则表达式从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请求

<?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]",