java - 如何从java中的XML文档中删除XML标签

标签 java xml

如何在java中从XML文档中删除XML标签?

例如,我有以下 XML:

<root>
  <item>
     <code>100001</code>
     <price>456</price>
     <name>ABC</name>
</item>
  <item>
     <code>100002</code>
     <price>123</price>
     <name>DEF</name>
</item>
  <item>
     <code>100003</code>
     <price>887</price>
     <name>XYZ</name>
</item>
</root>

我想从 XML 中删除价格标签并按以下方式生成 XML:

<root>
      <item>
         <code>100001</code>
         <name>ABC</name>
    </item>
      <item>
         <code>100002</code>
         <name>DEF</name>
    </item>
      <item>
         <code>100003</code>
         <name>XYZ</name>
    </item>
    </root>

此外,当我从 Web 服务获取此信息时,XML 标记可以更改,该 Web 服务可以更改其发送的信息。

最佳答案

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.File;
import java.util.ArrayList;

public class JAXBExample {
    static Root root = new Root();
    public static void main(String[] args) throws JAXBException {
        File file = new File("C:\\file.xml");
        File file1 = new File("C:\\result.xml");
        JAXBContext jaxbContext = JAXBContext.newInstance(Root.class);

        Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
        Root rootEle = (Root) jaxbUnmarshaller.unmarshal(file);

        ArrayList<item> itemList =new ArrayList<>();
        for (int i = 0; i < rootEle.getItemList().size() ; i++){
            item itemLocal = new item();
            itemLocal.setCode(rootEle.getItemList().get(i).getCode());
            itemLocal.setName(rootEle.getItemList().get(i).getName());
            itemList.add(itemLocal);
        }
        root.setItemList(itemList);
        Marshaller jaxbMarshaller = jaxbContext.createMarshaller();

        // output pretty printed
        jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

        jaxbMarshaller.marshal(root, file1);
        jaxbMarshaller.marshal(root, System.out);

    }
}

根类:

import org.apache.activemq.kaha.impl.data.Item;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.ArrayList;

@XmlRootElement(name = "root")
public class Root {

    public ArrayList<item> getItem() {
        return itemList;
    }

    public void setItem(ArrayList<item> item) {
        this.itemList = item;
    }

    private ArrayList<item> itemList;

}

元素类别:

public class item {
    public String getCode() {
        return code;
    }

    public void setCode(String code) {

        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    private String code;
    private String name;
}

我希望这会有所帮助。

关于java - 如何从java中的XML文档中删除XML标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44828703/

相关文章:

java - 如何设置 Primefaces 图表中轴标签的格式

java - 使用 Java 和 JFreeChart 修改已构建图表的数据集

java - 为什么从 java.util.HashMap[Long,Long] 获取丢失的键会返回 0L?

android - 中间可绘制的圆形按钮

java - 使用java xml框架创建基于XSD的xml文件

java - 使用 JAXB 处理 REST 调用 xml 响应

java - 在 Java ( Jaxb ) 中从 xsd 生成类

javascript - 如何将对象转换为节点

java - 为什么Java提供了LockSupport却没有什么用

java - FileOutputStream 在 Android 中不工作