目的:
爲了解決兩個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());//添加子子節點內容
}
}
}
}