[英]JAVA XML Parsing with namespaces using JAXB annotations
我从外部端点获得了巨大的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,但是有很多,但是它们在响应中都没有任何名称空间!
谢谢!
SimpleXml将忽略名称空间,仅解析XML:
public class Document {
public String RestOfTheDocument;
}
final String data = ...;
final SimpleXml simple = new SimpleXml();
final Document document = simple.fromXml(data, Document.class);
System.out.println(document.RestOfTheDocument);
这将输出:
something here
从Maven Central:
<dependency>
<groupId>com.github.codemonstur</groupId>
<artifactId>simplexml</artifactId>
<version>1.4.0</version>
</dependency>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.