解析xml字符串小util類

可以根據兄弟節點的名稱+值,來獲取需要查找的節點的值

也可直接查找所要查找的節點的值

maven節點

  <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>

 


import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

/**
 * @description 解析xml字符串
 */
public class xmlUtil {
	public static void main(String[] args) throws DocumentException {
		String xmlString = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "" 
	+ "<NewDataSet>" 
				+ "  <Table>" + ""
				+ "    <Playdate>20200322</Playdate>" 
				+ "    <PlaySeq>009</PlaySeq>"
				+ "    <OnlineDate>20200315</OnlineDate>"
				+ "    <NoOfTime>1</NoOfTime>\r\n" 
				+ "    <SeatYN>N</SeatYN>\r\n"
				+ "    <BalanceSeatYN>N</BalanceSeatYN>" 
				+ "    <CancelableDate>202003211100</CancelableDate>"
				+ "<PlayTimeValue>1700</PlayTimeValue>" 
				+ "" + "" 
				+ "  </Table>\r\n" 
				+ "  <Table>" + "" 
				+ "    "
				+ "    <PlaySeq>001</PlaySeq>" 
				+ "    <PlayTime>" 
				+ "		<Playdate>20200322</Playdate>"
				+ "		<PlaySeq>003</PlaySeq>" 
				+ "		</PlayTime> " 
				+ "    <OnlineDate>20200315</OnlineDate>"
				+ "    <NoOfTime>1</NoOfTime>\r\n"
				+ "    <SeatYN>N</SeatYN>\r\n"
				+ "    <BalanceSeatYN>N</BalanceSeatYN>" 
				+ "    <CancelableDate>202003211100</CancelableDate>"
				+ "<PlayTimeValue>17010</PlayTimeValue>" 
				+ "  </Table>\r\n" 
				+ "</NewDataSet>\r\n" + "";
		Document doc = DocumentHelper.parseText(xmlString);
		Element rootElt = doc.getRootElement();// .elementText("PlayTimeValue")
	
		// 根節點下面的節點
		
		getXml(rootElt.elements(), "Playdate", "20200322", "PlaySeq");

		// readStringXml(xmlString);
	}
	/**
	 * le:根節點下面的節點們   
	 * findEle  兄弟節點的名稱
	 * findeValue 兄弟節點值
	 * wantName  要找的節點的名稱
	 */
	public static void getXml(List<Element> le, String findEle, String findeValue, String wantName) {
		Element element = null;
		for (int i = 0; i < le.size(); i++) {
			element = le.get(i);
			if (findEle!=null &&findeValue!=null ) {
				if(element.getName().equals(findEle) && element.getText().equals(findeValue)) {
					System.out.println(element.getParent().element(wantName).getText());
				}
			}else {//當兄弟節點爲null的時候
				if(element.getName().equals(wantName)&&findEle==null) {
					System.out.println("查找到所需要的節點了"+element.getText());
				}
			}
			if (element.elements().size() > 0) {
				getXml(element.elements(), findEle, findeValue, wantName);
			}

		}

	}

}

 

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