我正在尝试使用Java中的JAXB以编程方式创建XML元素。这可能吗?我正在阅读本页here以了解我可以使用的内容,但迄今为止一无所获。
通常从定义bean
开始@XmlRootElement public class MyXML {
private String name;
public String getName() { return name; }
@XmlElement public void setName(String s) { this.name = s; }
}
并使用
之类的代码对其进行序列化public class Serializer {
static public void main(String[] args) {
MyXML m = new MyXML();
m.setName("Yo");
JAXBContext jaxbContext = JAXBContext.newInstance(MyXML.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(m, new File("MyXML_"+ ".xml"));
}
}
可以产生以下XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<myXML>
<name>Yo</name>
</myXML>
如何根据程序中输入的内容对Java类进行编程以创建元素标记名称?例如,在我的示例中,tag元素称为“name”。我怎么能在运行时设置它?这可能是泛型还是其他方式?
答案 0 :(得分:1)
JAXB中的B代表 Bean 所以不,没有定义bean就无法使用JAXB。
您只是想以动态方式创建XML,所以请查看jOOX例如link to full Gist)
Document document = JOOX.builder().newDocument();
Element root = document.createElement("contacts");
document.appendChild(root);
for (String name : new String[]{"John", "Jessica", "Peter"}) {
$(root).append(
$("contact"
, $("name", name)
, $("active", "true")
)
);
}
答案 1 :(得分:0)
这里,你在编译时使用注释,而你还不知道你需要的格式。编排这种方式与序列化没有什么不同,它基本上将java对象的字段直接映射到XML表示 - &gt; (如果对象中没有定义某些内容,则它不会出现在表示中)。 你喜欢做什么看起来像简单的xml制作(XML解析器足够S(t)AX / DOM无论如何 - 我喜欢杰克逊)。
为了好奇,如果你真的想摆弄注释,你可以使用the answer you will find here
的一些反思。