【发布时间】:2018-11-29 23:28:48
【问题描述】:
我有一个来自外部端点的巨大 XML 响应。我想解析对 java 类的 XML 响应。如果没有一个 XML 有命名空间,那么我就能够解析成相应的 POJOS,并且在那之前一切都很顺利。
但是,响应可能仅在根元素处包含命名空间。 例如,像这样
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="somevalue here"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RestOfTheDocument> something here </RestOfTheDocument>
</Document>
我可以保证没有任何内部 xml 元素会有更多的命名空间。
有没有办法实现这个?我看到了一些完全忽略名称空间的答案,但感觉不是很有说服力。有没有办法正确解析这些。
这是我为 XML 响应建模的 java 类
@XmlRootElement(name = "Document")
static class Response {
@XmlElement(name = "RestOfTheDocument", required = true, nillable = false)
RestOfTheDocument restOfTheDocument;
}
我尝试了什么?
-
像这样将命名空间信息添加到@XmlRootElement
@XmlRootElement(name = "Document", namespace = "somevalue here")
这样做会使所有内部 xml 元素为 NULL。
注意:我已将巨大的内部级别抽象为 RestOfTheDocument,但有很多但它们都不会在响应中包含任何命名空间!
谢谢!
【问题讨论】:
-
您可能应该展示一个您遇到困难的 MCVE。 JAXB 可以很好地处理名称空间。
标签: java xml xml-parsing jaxb jaxb2