根据 generate 中的子标签 删除 submit 中相同的子标签
<?xml version="1.0" encoding="UTF-8"?><formats> 
  <generate> 
   <a>1</a>
   <b>2</b>
   <c>3</c>
  </generate>  
  <submit> 
     <a>1</a>
     <b>2</b>
     <c>3</c>
    <d>234567</d> 
  </submit>  
  <return> 
     <e>45</e>
 <f>78</f>
 <g>12</g>
    <h>234567</h> 
  </return> 
</formats>结果是:
<?xml version="1.0" encoding="UTF-8"?><formats> 
  <generate> 
   <a>1</a>
   <b>2</b>
   <c>3</c>
  </generate>  
  <submit> 
    <d>234567</d> 
  </submit>  
  <return> 
     <e>45</e>
 <f>78</f>
 <g>12</g>
    <h>234567</h> 
  </return> 
</formats>

解决方案 »

  1.   

    看你发了好几个dom4j的帖子,自己去认真学一下啊,老等着别人帮你写
      

  2.   

    我都写完了,但是不行。
    public static void deleteXml(String bizcode, List<Node> generates,
    List<Node> submits, String nodeName) {
    String filename = xmlFileName(bizcode);
    SAXReader reader = new SAXReader(); Document doc;
    try {
    doc = reader.read(filename); List listRow = doc.selectNodes(nodeName); for (int i = 0; i < generates.size() - 2; i++) {
    for (int j = 0; j < submits.size() - 3; j++) {
    if (generates.get(i).getName().equals(submits.get(i).getName())) {
    for (Object obj : listRow) {
    Element element = (Element) obj;
    Element elesal = element.element(submits.get(i)
    .getName());
    System.out.println(elesal);
    boolean remove = element.remove(elesal);
    System.out.println(element);
    System.out.println(remove); }
    }
    } } XMLWriter writer = new XMLWriter(new FileWriter(filename));
    writer.write(doc);
    writer.flush();
    writer.close();
    } catch (DocumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } }
    删除不了啊,但控制台已经返回true,但实际并没有删除。
      

  3.   

    public static void main(String[] args) throws Exception {
    SAXReader reader = new SAXReader();
    Document document = reader.read(Test.class
    .getResourceAsStream("c.xml"));
    List<Node> generates = document.selectNodes("//formats/generate/*");
    List<Node> submits = document.selectNodes("//formats/submit/*");
    for (Node node : generates) {
    for (Node nodeSubmit : submits) {
    if (node.getName().equals(nodeSubmit.getName())
    && node.getText().equals(nodeSubmit.getText())) {
    document.getRootElement().element("submit").remove(nodeSubmit);
    }
    }
    } XMLWriter writer = new XMLWriter(new FileWriter("d:\\output.xml"));
    writer.write(document);
    writer.close();
    }
      

  4.   

    我的问题解决了,我换了一种方式:
    for (int i = 0; i < generates.size(); i++) {
      for(Object ob:list){
       Element personElement=(Element) ob;
      // personElement.remove(personElement.selectSingleNode("TranCode"));
       personElement.remove(personElement.selectSingleNode(generates.get(i).getName()));
       
      }
    }
    但还是要谢谢你。