【发布时间】:2019-09-30 21:56:27
【问题描述】:
我有一个问题正在尝试解决。我有两种格式的 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> 之后的第一个标签,这似乎有点过头了
我的尝试
String[] requestTags = requestBody.split("</");
String requestName = requestTags[requestTags.length-2].replaceAll("[^a-zA-Z0-9]",
在第一种情况下不是最好的,但在第二种情况下完全搞砸了
【问题讨论】:
-
欣赏反对票,但除非我知道你为什么反对票,否则我无法真正解决它
-
请分享您的尝试
-
也确实看到了有关 xml 解析器的帖子,但这似乎有点过头了 - 我不同意(但没有投反对票)。正则表达式只是不适合这项工作的工具。我会解析它并使用一个简单的 XPath:
name(/*/*)(See here 是 XPath 1.0 和 2.0 的示例。) -
@DanielHaley 我可以尝试 xml 解析器,但有两件事 1)我想要的是请求之后的顶级标签 2)请求非常大,这可能会开始影响性能,它可能不会在雷达下飞行.但我还是会尝试一下,看看它是如何工作的