java解析xmldom4j
㈠ java中dom4j解析xml文件怎麼獲取節點屬性
dom4j中,使用Element.attributes方法可以獲取到節點的屬性,而使用elements則可以獲取相應的子節點
比如:
Element root = doc.getRootElement();
List attrList = root.attributes();
for (int i = 0; i < attrList.size(); i++) {
//屬性的取得
Attribute item = (Attribute)attrList.get(i);
System.out.println(item.getName() + "=" + item.getValue());
}
List childList = root.elements();
for (int i = 0; i < childList.size(); i++) {
//子節點的操作
Element it = (Element) childList.get(i);
//對子節點進行其它操作...
}
㈡ 怎樣應用Dom4j對自動化生成的XML文件進行解析
是的,dom4j既可以解析xml文檔,也可以創建xml文檔。使用dom4j必須導入dom4j的jar包。
以下是用dom4j來解析xml文件生成另一個xml文檔的過程,我在這里只是將新生成的xml的文檔列印,dom4j也可以新生成的xml的文檔保存到磁碟。
import java.io.File;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class DomTest {
/**
* @param args
*/
public static void main(String[] args) {
try {
//讀取xml文件信息
File inputXml=new File("D:/test.xml");
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(inputXml);
//獲取根節點<xml>元素
Element root = document.getRootElement();
//創建xml文檔
Document doc = DocumentHelper.createDocument();
//創建表格的根節點<table>元素
Element rootElement = DocumentHelper.createElement("table");
doc.setRootElement(rootElement);
//獲取根節點<xml>元素的子節點<row>元素列表
Iterator iter = root.elementIterator("row");
//循環列表
while(iter.hasNext()) {
//得到每個<row>元素
Element rowEle=(Element)iter.next();
//創建表格中的行<tr>元素
Element trElement = rootElement.addElement("tr");
//創建表格中行<tr>元素的子元素列<td>元素
//第一列存儲<row>元素的ballsnum屬性值
Element ballsnum = trElement.addElement("td");
ballsnum.addText(rowEle.attributeValue("ballsnum"));
//第二列存儲<row>元素的opentime屬性值
Element opentime = trElement.addElement("td");
opentime.addText(rowEle.attributeValue("opentime"));
//第三列存儲<row>元素的opencode屬性值
Element opencode = trElement.addElement("td");
opencode.addText(rowEle.attributeValue("opencode"));
//第四列存儲<row>元素的expect屬性值
Element expect = trElement.addElement("td");
expect.addText(rowEle.attributeValue("expect"));
}
System.out.println(doc.asXML());
} catch (Exception e) {
e.printStackTrace();
}
}
}
我將
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<row ballsnum="3" opentime="2014-01-19 21:30:00" opencode="05,14,16,21,29,30|12" expect="14008"/>
<row ballsnum="3" opentime="2014-01-16 21:30:00" opencode="08,10,12,14,18,28|14" expect="14007"/>
</xml>
存儲在D盤下的test.xml文件中
我讀取D盤下的test.xml文件中的xml內容生成了一個表格
System.out.println(doc.asXML());語句將在控制台列印表格內容
列印結果如下:
<?xml version="1.0" encoding="UTF-8"?>
<table>
<tr>
<td>3</td>
<td>2014-01-19 21:30:00</td>
<td>05,14,16,21,29,30|12</td>
<td>14008</td>
</tr>
<tr>
<td>3</td>
<td>2014-01-16 21:30:00</td>
<td>08,10,12,14,18,28|14</td>
<td>14007</td>
</tr>
</table>
㈢ xml數據格式解析
XML作為一種通用的數據交換格式,以其平台無關性、語言無關性和系統無關性,極大地方便了數據的集成與交互。解析XML數據的常見方式有四種:DOM解析、SAX解析、JDOM解析和DOM4J解析。其中,DOM和SAX屬於基礎解析方法,它們是由官方提供,適用於所有平台。
DOM解析是一種基於樹結構的解析方式,能夠一次性載入整個XML文檔到內存中,因此可以在載入後自由地進行節點的增刪改查操作。SAX解析則是一種事件驅動的解析方式,它在解析過程中遇到特定的事件(如開始元素、結束元素等)時會觸發相應的處理方法,這種方式對於大型XML文檔更為高效。
JDOM和DOM4J是基於Java平台的擴展解析方式,它們提供了更簡潔、更易於使用的API。JDOM和DOM4J在處理XML數據時,提供了更多的便利功能,如自動處理命名空間、提供更豐富的節點操作方法等。
盡管XML解析方式多樣,但它們都遵循相同的解析原則:無論是DOM還是SAX,無論是基於平台的解析方式還是僅適用於Java平台的解析方式,它們都致力於實現XML數據的高效解析。在不同的語言環境中,雖然實現的語法可能會有所不同,但解析的基本邏輯和目標都是相同的。
對於開發者而言,選擇合適的XML解析方式取決於具體的應用場景和需求。例如,如果需要頻繁地對XML文檔進行復雜的查詢操作,DOM可能是更好的選擇;如果處理的是大型XML文檔,且希望減少內存佔用,SAX則更為合適。而對於Java開發者來說,JDOM和DOM4J提供了更簡潔的API,能夠簡化XML數據的操作。
綜上所述,XML的解析方式各有特點,開發者可以根據具體需求選擇最合適的解析方式,以實現高效、准確的數據處理。無論選擇哪種解析方式,XML的平台無關性、語言無關性和系統無關性始終是其最大的優勢。