gpt4 book ai didi

java - 如何更新 JAXB 中的特殊元素?

转载 作者:太空宇宙 更新时间:2023-11-04 14:57:31 24 4
gpt4 key购买 nike

我使用Jaxb从我的XML文件中读取和写入。我想更新我的XML中的空间元素,但我不知道如何在我的代码中做到这一点,你可以直到我怎么能做到这一点。那我的更新方法

public boolean Update(Layer entity) {
try {
File file = new File(Test.PathXMl);
//read from my xml
JAXBContext jaxbContext = JAXBContext.newInstance(Project.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Project project = (Project) jaxbUnmarshaller.unmarshal(file);
// here update my XML new value but not special element
Layer layer = new Layer();
layer.setLayerName(entity.getLayerName());
layer.setOrder(entity.getOrder());
layer.setVisible(entity.isVisible());
project.getLayer().add(layer);
//write in xml file
ObjectFactory objectFactory = new ObjectFactory();
javax.xml.bind.Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(project, new FileOutputStream(Test.PathXMl));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (JAXBException e) {
e.printStackTrace();
}
return false;
}

我的 XML 文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Project xmlns="http://www.example.org/ProjectDataBase" name="name1">
<Layer idLayer="2">
<LayerName>a</LayerName>
<Order>2</Order>
<Visible>false</Visible>
</Layer>
<Layer idLayer="1">
<LayerName>add</LayerName>
<Order>1</Order>
<Visible>true</Visible>
</Layer>
</Project>

注意:例如,我需要从 a -->b 更改 LayerName 中的值,但仅在 IdLayer="2" 中更改(在我的代码中,我无法选择我想要更新的元素)。请以任何方式做到这一点!!!!

最佳答案

解码 XML 后,您应该执行以下检查

// unmarshal Project
for(Layer layer : project.getLayer()) {
if (layer.getIdLayer().equals("2")) {
layer.setLayerName("b");
}
}
// marshal Project back to XML

关于java - 如何更新 JAXB 中的特殊元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23023599/

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