java循环a jaxb
我只想循环一个具有相同xml元素但具有不同ID的jaxb封送,这与我下面的代码不同,我的代码是为每个ID解析新的xml文件,并重写旧的xml文件
数据[][]是从矩阵中读取的,数据[i][0]表示ID列表,我想将这些ID设置为客户ID
Customer customer = new Customer();
File file = new File("C:/data.xml");
for (int i = 0; i < data.length; i++) {
customer.setId(data[i][0]);
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(customer, file);
jaxbMarshaller.marshal(customer, System.out);
}
上述代码的输出:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer id="1"/>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer id="2"/>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer id="3"/>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer id="4"/>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer id="5"/>
我想在一个xml文件中输出所有ID,有什么提示吗
# 1 楼答案
您可以在
Marshaller
上设置JAXB_FRAGMENT
属性以防止写入头。这在编组到另一个文档时是必要的系统和文件输出
下面是控制台和文件的结果输出
了解更多信息
# 2 楼答案
只需将marhsaller的构造移出循环即可。您可以在同一线程中重复使用封送拆收器
或者您真的试图将客户列表作为单个xml文件输出吗?然后需要一个客户对象数组,然后对该数组进行马歇尔处理