dom4j 解析xml样例代码

xml内容格式:

<?xml version=”1.0” encoding=”utf-8”?>
	<DATAAREA>
		<P_CHANGE_FLAG>职位信息变化标识0:未变化,1:变化</P_CHANGE_FLAG>
	        <A_CHANGE_FLAG>环节信息变化标识 0:未变化,1:变化</A_CHANGE_FLAG>
		<FLOW_ID>流程内部ID(内部关联使用)</FLOW_ID>
		<FLOW_TITLE>流程名称</FLOW_TITLE>
		<POSITIONS>						
			<POSITION>
				<POSITION_ID>职位唯一标识</POSITION_ID>
				<NAME>职位名称</NAME>
				<DUTY>职位职责</DUTY>
				<DEPARTMENT>办理科室</DEPARTMENT>
				<PERSON>办理人员及联系电话</PERSON>
			    <PERSONGUIDS>32rft;3fg55gh;6h6u <PERSONGUIDS>
				<PERSONS> 张三;李四;王五<PERSONS>
			</POSITION>
			
			。。。。。多个<POSITION>
		</POSITIONS>
		
		<FLOW_ACTIVITYS>		
			<FLOW_ACTIVITY>
				<ACTIVITY_ID>环节ID(内部关联使用)</ACTIVITY_ID>
				<TYPE>环节类型(环节的类型:U-用户参与;D-系统过程处理)</TYPE>
		                <TITLE>环节名称</TITLE>
				<POSITION_ID>职位标识</POSITION_ID>
				<HANDLE_TIMELIMIT>环节办理时限,填写数字</HANDLE_TIMELIMIT>
				<HANDLE_TIMELIMIT_TYPE>环节办理时限的单位,填写数字代码,内容为:1:工作日;2:月;3:年</HANDLE_TIMELIMIT_TYPE>
				<FILES>
					<FILE>
						<FILENAME>职位文书名称(完整文件名,带后缀)
						</FILENAME>
						<FILEKIND>发给行政相对人或内部存档</FILEKIND>
						<FILEURL>文书链接地址(公有云地址)</FILEURL>
						<FILECONTENT>   </FILECONTENT>
					</FILE>
					
					。。。多个<FILE>
				</FILES>
			</FLOW_ACTIVITY>

具体的解析代码如下:重点关注获取xml的节点部分的代码:

 
 
//infoXML  即为要解析的xml格式的   符串
			Document document = DocumentHelper.parseText(infoXML);  
			//获取A_CHANGE_FLAG标签节点的内容
			String a_changeFlag = document.selectSingleNode("/DATAAREA/A_CHANGE_FLAG").getText();
			
			//	----------------------------	开始  解析xml数据		--------------------------
			//获取POSITIONS节点
			Node nodePositions = document.selectSingleNode("/DATAAREA/POSITIONS");
			//取得POSITIONS节点下所有名为“POSITION”的子节点,并进行遍历.  遍历后每一个元素就是一组 POSITION 标签中的值
		    List listPosition = ((Element) nodePositions).elements("POSITION");
	        for (Iterator it = listPosition.iterator(); it.hasNext();) {     //it.hasNext()判断是否有内容
	        	Element elmPosition = (Element) it.next(); //
				//  节点   和  节点名字作参数获取节点值
				String str = ResolveXMLDataUtil.getElementAsText( elmPosition, "POSITION_ID");
	        }
	    	
	        /*			
			 *  三、 解析获取FLOW_ACTIVITYS节点   
				
				其中的FILE节点又有多个!!!!
			*/
	        //获取FLOW_ACTIVITYS节点 
			Node nodeFlowActivitys = document.selectSingleNode("/DATAAREA/FLOW_ACTIVITYS");
			//取得FLOW_ACTIVITYS节点下所有名为“FLOW_ACTIVITY”的子节点,并进行遍历.  遍历后每一个元素就是一组 FLOW_ACTIVITY 标签中的值
		    List<Element> listFlowActivity = ((Element) nodeFlowActivitys).elements("FLOW_ACTIVITY");
	        for (Iterator it = listFlowActivity.iterator(); it.hasNext();) {     
	        	Element elmFlowActivity = (Element) it.next(); 
	        	
	        	String title =  ResolveXMLDataUtil.getElementAsText( elmFlowActivity, "TITLE");
	        		        	
	        	//开始解析  <FILES>内容。   注意:这里都是用的Element相关api,node无相关api
	        	//获取FILES节点标签,返回的是集合,每一个元素就一个FILES
	        	List<Element> elements = elmFlowActivity.elements("FILES");
	        	//FILES标签肯定只有一个,所以取出第一个值
	        	Element elementFiles = elements.get(0);
	        	//elementFiles中存在多个FILE节点,获取他们  
	        	List<Element> listFile = elementFiles.elements("FILE");
	        	for (Iterator itFILE = listFile.iterator(); itFILE.hasNext();) {   
		        	Element elmFile = (Element) itFILE.next(); 
		        	ResolveXMLDataUtil.getElementAsText( elmFile, "FILENAME");
	        	}
	        }


猜你喜欢

转载自blog.csdn.net/xiaoanzi123/article/details/79760268
今日推荐