gpt4 book ai didi

java - 使用 jaxb 解析错误的 xml

转载 作者:行者123 更新时间:2023-12-01 12:04:05 28 4
gpt4 key购买 nike

我有一种情况,xml(但它不是真正的 xml 数据,而是基于标签的自定义数据格式)是从第三方服务器发送的(因为我无法更改格式并与第三方协调是相当困难。标记如下所示

    <?xml version="1.0" encoding="UTF-8"?>
<result>SUCCESS</result>
<req>
<?xml version="1.0" encoding="UTF-8"?>
<Secure>
<Message id="dfgdfdkjfghldkjfgh88934589345">
<VEReq>
<version>1.0.2</version><pan>3453243453453</pan>
<Merchant><acqBIN>433274</acqBIN>
<merID>3453453245</merID>
<password>342534534</password>
</Merchant>
<Browser></Browser>
</VEReq>
</Message>
</Secure>
</req>

<id>1906547421350020</id>
<trackid>f68fb35c-cbc2-468b-aaf8-7b3f399b709d</trackid>
<ci>6</ci>

现在我只想将 result、req、id、trackid 和 ci 标签值作为解析输出。意味着解析后我需要 req 来包含标签内的所有内容。这里还有一点是 req 标签嵌入到另一个 xml 中,因为它不是 CDATA。我无法使用 JAXB 解析它。

如果我可以在文件中配置可用标签或任何其他方式,有人可以拥有可以解析所有内容的库吗?我真的不想将它们转换为对象,即使是以标签为键、内容为值的 HashMap 也可以。但我更喜欢 POJO 模型(从这种 xml 生成一个类)。

如果有人可以帮助我,请告诉我。

最佳答案

首先使其格式良好的 XML,然后传递给您认为合适的任何工具。 JAXB 还不错,因为它会忽略它不知道的元素(除了根元素之外)。

而且由于大多数(如果不是全部)工具都期望格式良好的 XML,因此您必须首先注意将“假”XML 转换为“真”XML。我首先尝试 JTidy 或 JSoup 之类的东西,看看它们是否有助于使格式不良好的 XML 变成格式良好的。

如果它不起作用,我会尝试在较低级别的 SAX 或 StAX 解析上破解它。您发布的 XML 似乎存在两个问题:正文中没有单个根元素和 XML 声明。我认为这两个问题都可以通过一些最小的解析器黑客来解决。

And I think there is a special place in hell for people who invent this type non-wellformed XML. Damned to sit there and correct all the HTML documents on the Internet into valid XHTML by hand.

关于java - 使用 jaxb 解析错误的 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27779442/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com