首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java如何在XML指定位置插入节点

2012-12-15 
java怎么在XML指定位置插入节点xml文件:?xml version1.0 encodingutf-8?rootchild ID1old

java怎么在XML指定位置插入节点
xml文件:
<?xml version="1.0" encoding="utf-8"?>
<root>
  <child ID="1">  old  </child>
  <child ID="2">  old  </child>
</root>
--------------------------------------------
我要在child的ID="1"和ID="2"之间插入节点怎么插入?插入后的效果如下:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <child ID="1">  old  </child>
  <child ID="3">  new  </child>   -->这是新插入的的节点
  <child ID="2">  old  </child>
</root>
----------------------------------------------------
我用的是DOM4J的jar包 ,请高手指教.
[解决办法]
呼呼,有没有发错位置,这里有人能解决吧?
[解决办法]
API你看过了吗?
[解决办法]

SAXReader reader = new SAXReader(); 
   Document doc = reader.read("conf/student.xml"); 
   Element root = doc.getRootElement(); 
   Element zhangsanNode = (Element) root.selectSingleNode(path); 
   Element cloneE = (Element) zhangsanNode.clone(); 
   cloneE.element("age").setText(Integer.parseInt(cloneE.elementText("age"))+1+""); 
   Element parent = zhangsanNode.getParent(); 
   parent.elements().add(2, cloneE); 
   OutputFormat format = OutputFormat.createPrettyPrint(); 
   XMLWriter writer = new XMLWriter(new FileOutputStream("conf/student.xml"),format); 
   writer.write(doc); 
   writer.close(); 

xml 
<?xml version="1.0" encoding="UTF-8"?> 
<students> 
  <student> 
    <name>zhangsan</name>  
    <age>18</age>  
    <gender>male</gender> 
  </student>  
  <student> 
    <name>lisi</name>  
    <age>22</age>  
    <age>23</age>  
    <gender>remale</gender> 
  </student>  
</students>
python简明教程

[解决办法]

引用:
SAXReader reader = new SAXReader(); 
  Document doc = reader.read("conf/student.xml"); 
  Element root = doc.getRootElement(); 
  Element zhangsanNode = (Element) root.selectSingleNode(path); 
  E……


貌似看懂我的意思,我节点和属性都可以添加,只是想在指定位置插入还不是在最末尾位置插入,而且要用dom4j(因为一开始就是用的这个,换的话所有程序都要改)
[解决办法]
阿弥陀佛
阿弥陀佛
[解决办法]
关注中

[解决办法]
一般插入都是这样
<?xml version="1.0" encoding="utf-8"?>


<root>
  <child ID="1"> old </child>
  <child ID="2"> old </child> 
  <child ID="3"> new </child>-->这是新插入的的节点位置
</root>
怎样插入才能在想要的位置如下:
<?xml version="1.0" encoding="utf-8"?>
<root>
  <child ID="1"> old </child>
  <child ID="3"> new </child> -->这是新插入的的节点位置
  <child ID="2"> old </child>
</root>
[解决办法]
怎么在取得节点值的同时获得节点的索引啊
[解决办法]
楼主还在吗    有没有解决这个问题呢?      分享一下。    我也正在做这个东西,实现功能与楼主相同。
[解决办法]
我在正需要这个功能,找高手求助
[解决办法]
同样的功能,用dom4j能不能从根节点开始位置插入,不在最后插入?
[解决办法]
遇到同样的问题
[解决办法]
try {    
          SAXReader reader = new SAXReader();    
          Document document = reader.read("./src/source_file/new_xml.xml");    
            
            
                //Add new node GlobalPurchaseOrderAcknowledgmentReasonCode  
          Element root = (Element) document.selectSingleNode("/Pip3Y4PurchaseOrderConfirmation/PurchaseOrder");    
          List<Element> elements = root.elements();    
          int index = 0;    
          for(Element element:elements){    
              index++;    
              System.out.println("Index:"+index+"Element_Name:"+element.getName());  
              if("AccountDescription".equals(element.getName())){    
  
                  Element elem = DocumentHelper.createElement("GlobalPurchaseOrderAcknowledgmentReasonCode");    
                  elem.addText(entity.getGlobalPurchaseOrderAcknowledgmentReasonCode());    
                  Element elem1 = DocumentHelper.createElement("GlobalPurchaseOrderAcknowledgmentReasonCode");    
                  elem1.addText(entity.getGlobalPurchaseOrderAcknowledgmentReasonCode_2());    


                  Element elem2 = DocumentHelper.createElement("GlobalPurchaseOrderStatusCode");    
                  elem2.addText(entity.getGlobalPurchaseOrderStatusCode());    
                  elements.add(index,elem);    
                  elements.add(index+1,elem1);    
                  elements.remove(index+2);  
                  elements.add(index+2, elem2);  
                  break;    
              }    
          }    

这个是我解决方案,希望可以帮助你

热点排行
Bad Request.