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

标签 java xml jaxb

我使用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/

相关文章:

Java EE Web 应用程序文件创建

java - 不使用注解参数的Hibernate接口(interface)映射 "targetEntity"

java - 实例化缓冲编写器的差异

sql-server - FOR XML SQL Server - 输出 XML 中的变量元素名称

java - 如何使用jaxb在xml文件中创建表?

java - Windows 上的 java.security 文件在哪里?

xml - 用于转换结构的 XSLT + 用于转换值的 Ruby?

xml - 收到的XML响应是乱码

Java 生成的 XML 在 .Net/SQL 中显示特殊字符

java - 使用 JAXB 编码内部类 - Java