我要解决一个问题。我有2种格式的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>
<?xml version="1.0" encoding="UTF-8"?>
<Request xmlns="urn:x-google-com:ABC.plan.services.plans">
<SecondRequest/>
</Request>
在两种情况下,我都希望提取标记名,该标记名是<Request>
之后的第一个。即OneRequest
和SecondRequest
(它们是动态的,一共有100个)。我尝试使用正则表达式,但没有得到我想要的。任何意见或建议将不胜感激。
也确实看到了有关xml解析器的帖子,但是对于我基本上想要的只是<Request>
之后的第一个标签似乎有点矫kill过正。
我的尝试
String[] requestTags = requestBody.split("</");
String requestName = requestTags[requestTags.length-2].replaceAll("[^a-zA-Z0-9]",
在第一个类型上效果不是最好,但在第二个类型上完全搞砸了
答案 0 :(得分:0)
您基本上只需要使用正则表达式中的\s
选项即可实现:
使用此正则表达式,并从tagname
组中获取值:
<Request .*?>\s*<(?<tagname>.*?)>