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());//添加子子节点内容
				 }
			 }
		}
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值