xml文檔的比較與更新

目的:

爲了解決兩個XML文件內容的比較與更新,達到以其中的一個文件爲樣本來對照修改另一文件,實現文件的更新。

<span style="white-space:pre">	</span>//比較connectionConfig文件
	private String comparaConXml(Document yc_doc,Document bz_doc) {
		String XMBBH="";
		Element rootEl=bz_doc.getRootElement(); //獲取標準文件中的根節點
		for (Iterator bz_it = rootEl.elementIterator("XMXX"); bz_it.hasNext();) {
			Element child = (Element) bz_it.next();
			XMBBH=child.element("BBH").getText();
		}
		//循環遍歷遠程文件,判斷該節點是否存在
		Node node=yc_doc.selectSingleNode(rootEl.getName());
		if(node==null){
			//不存在根節點,將根節點及之後的節點都加上
			Element yc_rootEl=yc_doc.addElement(rootEl.getName());
			for (Iterator it = rootEl.elementIterator(); it.hasNext();) {
				Element child = (Element) it.next();
				addNode(child, yc_rootEl);
			}
		}else {
			//存在根節點,遍歷根節點下的子節點
			Element yc_rootEl=yc_doc.getRootElement(); //獲取客戶文件中的根節點
			for (Iterator it = rootEl.elementIterator(); it.hasNext();) {
				Element bz_node = (Element) it.next();
				if(yc_rootEl.element(bz_node.getName())==null){
					//添加節點及其子節點
					addNode(bz_node, yc_rootEl);
				}else {
					//存在節點
					Element yc_node=yc_rootEl.element(bz_node.getName());
					isChild(bz_node, yc_node);
				}
			}
		}
		return XMBBH;
	}
	//添加節點
	private  void addNode(Element node,Element yc_pNode) {
		//判斷標準該節點是否有孩子節點
		if(node.elementIterator().hasNext()){
			//若有孩子節點,則遍歷其孩子節點
			Element yc_node=yc_pNode.addElement(node.getName());//添加子子節點 
			for (Iterator childEL=node.elementIterator();childEL.hasNext();) {
				Element child=(Element)childEL.next();
				addNode(child,yc_node);
			}
		}else {
			//若沒有孩子節點,則添加該節點及其節點內容
			Element yc_node=yc_pNode.addElement(node.getName());//添加子節點 
			yc_node.setText(node.getText());//添加子子節點內容
		}
	}
	//判斷節點是否存在
	private  void isChild(Element node,Element yc_node) {
		//判斷該節點下的子節點是否有孩子節點,若沒有孩子節點,判斷該子節點是否存在,若不存在則添加
		//若有孩子節點,循環孩子節點
		if(node.elementIterator().hasNext()){
			for (Iterator bz_it= node.elementIterator(); bz_it.hasNext();) {
				Element bz_child = (Element) bz_it.next();
				if(yc_node.element(bz_child.getName())==null){
					addNode(bz_child, yc_node);
				}else {
					Element yc_child=yc_node.element(bz_child.getName());
					isChild(bz_child, yc_child);
				}
			}
		}else {
			for(Iterator bz_it=node.elementIterator();bz_it.hasNext();){
				 Element bz_child = (Element) bz_it.next();
				 if (yc_node.element(bz_child.getName())==null) {
					Element yc_child=yc_node.addElement(bz_child.getName());//添加子子節點  
					yc_child.setText(bz_child.getText());//添加子子節點內容
				 }
			 }
		}
	}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章