java - 使用 JAXB 解码字符串 XML 不起作用并仅返回空值

标签 java jaxb

我试图将字符串 XML 解码为 POJO 对象,但没有成功。这是我正在使用的代码

MyObject myobject = JAXB.unmarshal(new StringReader(myxmlstring), MyObject.class);

Xml 的结构和对象的结构如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:SomePerson xmlns:ns2="http://to/something">
    <SomePerson>
        <person>
            <name>joe</name>
        </person>
    </SomePerson>
</ns2:SomePerson>

这是我的对象:

@XmlRootElement(name="SomePerson")
@XmlAccessorType(XmlAccessType.FIELD)
public class MyObject {

    @XmlElement(name = "name")
    private String name;

    //getter and setters
}

最佳答案

建议你做这样的事情::

        final DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        final InputSource is = new InputSource();
        is.setCharacterStream(new StringReader("<root><node1></node1></root>")); // put your xml string here

        final Document doc = db.parse(is);

        final XMLInputFactory xif = XMLInputFactory.newFactory();
        final DOMSource domSource = new DOMSource(document);
        final XMLStreamReader xsr = xif.createXMLStreamReader(domSource);
        final XMLReaderWithoutNamespace xr = new XMLReaderWithoutNamespace(xsr);
        final Unmarshaller unmarshaller = JAXBContext
                .newInstance("POJO LOCATION").createUnmarshaller();
        return (POJOClass) unmarshaller.unmarshal(xr);

请告诉我这是否有帮助

关于java - 使用 JAXB 解码字符串 XML 不起作用并仅返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60244740/

相关文章:

java - 在通过 <h :message> in JSF 进行展示重定向后保留 FacesMessage

java - "T extends Junk"在 Java 的泛型类中意味着什么?

java - 如何防止hibernate创建代理

java - 使用二进制搜索在排序的多维数组中查找数字

java - XJC 不生成带有命名空间的@XmlElement 吗?

java - 如何使用 selenium webdriver 计算网页上可用的图像数量?

java - RuntimeException : java. io.IOException : unexpected element (uri :"urn:infinispan:config:4.2", 本地 :"property")。预期元素为 <{}entry>

java - JAXB 解码 : ignore xsi:nil=true

java - 将 JAXB 生成的类用于需要具有模式的整数的元素

java - JAXB 编码由 XmlAdapter 创建的 ArrayList