如何以编程方式从 Java 创建 XML?
How do I programmatically create XML from Java?
我正在尝试在 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 class 以根据程序中输入的内容创建元素标签名称?例如,在我的示例中,标记元素称为 'name'。我怎么能在运行时设置它呢?这可以通过泛型或其他方式实现吗?
JAXB 中的 B 代表 Bean 所以不,如果不定义 beans 就无法使用 JAXB。
你只是想动态地创建一个 XML 所以看看 jOOX for example (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")
)
);
}
在这里,你在编译时之前使用注释,而你还不知道你需要的格式。这种方式的编组与序列化没有什么不同,它基本上直接映射 java 对象到 XML 表示 --> (如果对象中没有定义某些东西,它就不会出现在表示中)。
你想做的事情看起来很简单 xml 制作(一个 XML 解析器就足够了 S(t)AX/DOM 无论如何——我喜欢 Jackson)。
出于好奇,如果你真的想 fiddle 带注释,你可以结合 the answer you will find here
使用一些反射
我正在尝试在 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 class 以根据程序中输入的内容创建元素标签名称?例如,在我的示例中,标记元素称为 'name'。我怎么能在运行时设置它呢?这可以通过泛型或其他方式实现吗?
JAXB 中的 B 代表 Bean 所以不,如果不定义 beans 就无法使用 JAXB。
你只是想动态地创建一个 XML 所以看看 jOOX for example (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")
)
);
}
在这里,你在编译时之前使用注释,而你还不知道你需要的格式。这种方式的编组与序列化没有什么不同,它基本上直接映射 java 对象到 XML 表示 --> (如果对象中没有定义某些东西,它就不会出现在表示中)。 你想做的事情看起来很简单 xml 制作(一个 XML 解析器就足够了 S(t)AX/DOM 无论如何——我喜欢 Jackson)。
出于好奇,如果你真的想 fiddle 带注释,你可以结合 the answer you will find here
使用一些反射