gpt4 book ai didi

java - 如何将 xml 字符串转换为对象。我不知道提前是什么对象。就几种可能

转载 作者:行者123 更新时间:2023-11-30 07:17:58 24 4
gpt4 key购买 nike

我有一个字符串,它是一个 XML 字符串,它可能对应于 jaxb 生成的模式文件的几个对象之一。
提前不知道是什么物体。

  • 如何将此 XML 字符串转换为 jaxb xml 对象?某种类型的解码?
  • 如何确定分配给哪个对象?
  • 从 xml 字符串转换为对象后,如何实例化对象?

最佳答案

您可以执行以下操作:

只要有一个通过@XmlRootElement@XmlElementDecl 注释与您的类相关联的根元素,您就不需要指定类的类型正在解码(参见:http://blog.bdoughan.com/2012/07/jaxb-and-root-elements.html)。

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Foo {

private String bar;

public String getBar() {
return bar;
}

public void setBar(String bar) {
this.bar = bar;
}

}

演示

要从 String 中解码,只需将 String 包装在 StringReader 的实例中。 unmarshal 操作会将 XML 转换为域类的实例。如果您不知道是什么类,则必须使用 instanceofgetClass() 来确定它是什么类型。

import java.io.StringReader;
import javax.xml.bind.*;

public class Demo {

public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Foo.class);

String xml = "<foo><bar>Hello World</bar></foo>";
StringReader reader = new StringReader(xml);

Unmarshaller unmarshaller = jc.createUnmarshaller();
Object result = unmarshaller.unmarshal(reader);

if(result instanceof Foo) {
Foo foo = (Foo) result;
System.out.println(foo.getBar());
}
}

}

输出

Hello World

关于java - 如何将 xml 字符串转换为对象。我不知道提前是什么对象。就几种可能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15708630/

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