繁体   English   中英

使用jaxb解析错误的xml

[英]Parsing an a false xml using jaxb

我遇到这样一种情况,即从第三方服务器发送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>

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

如果我可以在文件中或其他方式配置可访问的标签,那么有人可以拥有可以解析所有内容的库吗? 我真的不想将它们转换为对象,即使是将标签作为键并将内容作为值的哈希图也很好。 但是我更喜欢POJO模型(从这种xml生成类)。

让我知道是否有人可以帮助我。

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

而且由于大多数(如果不是全部)工具仍然期望格式正确的XML,因此您必须首先将“ false” XML转换为“ true” XML。 我首先尝试使用JTidy或JSoup之类的方法,看看它们是否有助于使格式不正确的XML格式正确。

如果它不起作用,我将尝试在较低级别的SAX或StAX解析中对其进行破解。 您发布的XML似乎有两个问题:主体中没有单个根元素和XML声明。 我认为这两个问题都可以通过一些最小的解析器入侵来解决。

而且我认为对于发明这种类型的非格式XML的人来说,这是一个特殊的地方。 该死的坐在那里,用手将Internet上的所有HTML文档更正为有效的XHTML。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM