㈠ 如何用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);
//對子節點進行其它操作...
}
㈡ java中dom4j解析xml文件怎麼獲取節點屬性
java讀取xml節點元素,主要使用java提供的解析xml的工具類亮行SAXParserFactory,如下代碼:package xml.xmlreader;import java.io.File;import java.net.URL;import java.util.Properties;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;public class CFGParser {//解析斗升xml文件的工具類 private Properties props; public Properties getProps() { return props; } public void setProps(Properties props) { this.props = props; } public void parse(String filename) throws Exception { CFGHandler handler = new CFGHandler(); SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setNamespaceAware(false); factory.setValidating(false); SAXParser parser = factory.newSAXParser(); URL confURL = super.getClass().getClassLoader().getResource(filename); if (confURL == null) { System.out.println("敬銷嘩Can't find configration file."); return; } try { parser.parse(confURL.toString(), handler); this.props = handler.getProps(); } finally { factory = null; parser = null; handler = null; } } public void parseFile(String filename) throws Exception { CFGHandler handler = new CFGHandler(); SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setNamespaceAware(false); factory.setValidating(false); SAXParser parser = factory.newSAXParser(); File f = new File(filename); if ((f == null) || (!f.exists())) return; try { parser.parse(f, handler); this.props = handler.getProps(); } finally { factory = null; parser = null; handler = null; } }}package xml.xmlreader;import java.util.Properties;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;public class CFGHandler extends DefaultHandler{ private Properties props; private String currentSet; private String currentName; private StringBuffer currentValue = new StringBuffer(); public CFGHandler() { this.props = new Properties(); } public Properties getProps() { return this.props; } public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { this.currentValue.delete(0, this.currentValue.length()); this.currentName = qName; } public void characters(char[] ch, int start, int length) throws SAXException { this.currentValue.append(ch, start, length); } public void endElement(String uri, String localName, String qName) throws SAXException { this.props.put(qName.toLowerCase(), this.currentValue.toString().trim()); }}xml文件 6 10 23:00 12:00 18:00jsp獲取各個節點的值:
㈢ 如何提取XML文件中的數據
使用SAXReader需要導入dom4j-full.jar包。
dom4j是一個Java的XML API,類似於jdom,用來讀寫XML文件的。dom4j是一個非常非常優秀的Java XML API,具有性能優異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟體,可以在SourceForge上慎旁找到它。
SAXReader parser=new SAXReader();//dom4j解析器
Reader reader;
try{
reader = new FileReader("文件.xml");
Document doc=parser.read(reader); /梁裂/xml載入document象
Element root=doc.getRootElement(); //按照樹思想進行解析
List<Element> list=root.elements();//級元素集合elementIterator()
for(Element ele :list){
List<Element> eles = ele.elements();//取需要TWO屬性
// 比較取需寬渣橡要two即
㈣ 在JAVA web項目中,如果用dom4j來操作xml文件,應該怎麼寫SAXReader.read(「路徑」),這個路徑該怎麼寫
可以參考 :
package com.zuxia.dom4j;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
*
* 使用dom4j解析xml
*
* 1. 創建解析器
*
* 2. 創建文檔對象Document
*
* 3. 獲取根節點
*
*/
public class Dom4jParseXML {
public static void main(String[] args) {
//1. 創建解析器
SAXReader saxreader = new SAXReader();
Document doc = null;
try {
//2. 創建文檔對象Document
doc = saxreader.read(new File("src/studentinfo.xml"));
} catch (Exception e) {
System.out.println("讀取xml文件異常!");
}
//3. 獲取根節點
Element root = doc.getRootElement();
//4. 獲取元素
Iterator<Element> iter = root.elementIterator();
while(iter.hasNext()){
Element student = iter.next();
System.out.println("學號:"+student.attributeValue("stuno")+"\t姓名:"+student.elementText("name"));
}
//提示用戶添加新的數據
Scanner sc = new Scanner(System.in);
System.out.println("請輸入學號:");
String stuno = sc.nextLine();
System.out.println("請輸入姓名:");
String name = sc.nextLine();
System.out.println("請輸入年齡:");
String age = sc.nextLine();
//將數據添加在Document中
Element student = root.addElement("student");
student.addAttribute("stuno", stuno);
student.addElement("name").addText(name);
student.addElement("age").addText(age);
//3. 設置格式
OutputFormat format = OutputFormat.createCompactFormat();
format.setIndentSize(4);
format.setNewlines(true);
try {
//4. 保存xml文件
XMLWriter out = new XMLWriter(new FileOutputStream("src/studentinfo.xml"),format);
out.write(doc);
System.out.println("ok!!!");
} catch (Exception e) {
System.out.println("失敗!");
}
System.out.println("完成了!");
}
}
㈤ dom4j讀取xml 內存溢出
方法1:myeclips中調整JVM內存:
windows-perferences-java-installed JREs,選擇JRE點「Edit」,在「default JVM arguments」中輸入「-Xms64m -Xmx512m」
其中-Xms64m表示運行時最小內存為64M,-Xmx512m為運行時最大內存為512M,這兩個值根據機器實際情況設置,其中最大內存不碰山可超過機器實際內存
方法2:用sax解頌吵迅析
sax.read(new FileReader(d:/野此xml/a.xml ");
或
sax.read(new FileInputStream(d:/xml/a.xml ");
㈥ dom4j 讀取xml配置文件,哪種效率高一點呢
我最近也在用Dom4j,不過我用的是 Element。
不確定哪種效率更高,用XPath來做 效率應該還行吧
我覺得這些都是較次要的
瓶頸應該是在 讀取XML 的IO操作上。
經測試 IO一次,大約耗時1秒多
我的laptop是吵改Core I3 2.27GHz的,升沖判讓計算機來多做幾次判昌計算是沒問題的。個人見解。
㈦ 如何使用dom4j解析多節點的xml文件呢 如下例子
創建File,獲取根節點
[java] view plain
/**
* 獲取文件的document對象,然後獲取對應的根節點
* @author chenleixing
*/
@Test
public void testGetRoot() throws Exception{
SAXReader sax=new SAXReader();//創建一個SAXReader對臘返象
File xmlFile=new File("d:\\test.xml");//根據指首族定的路徑創建file對象
Document document=sax.read(xmlFile);//獲取document對象,如果文檔無節點,則會拋出Exception提前結束
Element root=document.getRootElement();//獲取根節點
this.getNodes(root);//從根節點開始遍歷所有節點
}
從指定節點開始,遞歸遍歷所有節點和屬性
[java] view plain
/**
* 從指定節點開始,遞歸遍歷所有子節點
* @author chenleixing
*/
public void getNodes(Element node){
System.out.println("--------------------");
//當前節點的名稱、文本內容和屬性
System.out.println("當前節點名稱:"+node.getName());//當前節點名稱
System.out.println("當前節點的內容:"+node.getTextTrim());//當前節點名稱
List<Attribute> listAttr=node.attributes();//當前節點的所有屬性的list
for(Attribute attr:listAttr){//遍歷當前節點的所有屬性
String name=attr.getName();//屬性名稱
String value=attr.getValue();//屬性的值
System.out.println("屬性名稱:"+name+"屬性值:"+value);
}
//遞歸遍歷當前節點所有的子節點
List<Element> listElement=node.elements();/輪芹飢/所有一級子節點的list
for(Element e:listElement){//遍歷所有一級子節點
this.getNodes(e);//遞歸
}
㈧ Axis中如何通過dom4j獲取xml文件中節點的值(不是屬性,是節點中間的字元串)
這個很簡單,上代肢畢碼吧
try {
String strXML = "你的XML字元正洞串";
Document document = DocumentHelper.parseText(strXML);
Node node = document.selectSingleNode('examples/example/examplemain/舉飢枯a');
System.out.println(node.getText());
node = document.selectSingleNode('examples/example/examplemain/b');
System.out.println(node.getText());
node = document.selectSingleNode('examples/example/examplemain/c');
System.out.println(node.getText());
} catch (DocumentException ex) {
ex.printStackTrace();
}
㈨ DM4J 解析XML文件
public class Resourceitem {
private String title;
private String keywords;
private String kind;
private String describe;
private String date;
private String url;
/** get ... set ... **/
public static void main(String[] args) {
try {
SAXReader reader = new SAXReader();
Document document = reader.read(new File("明賀消D:/one.xml"));// 載入xml
Element root = document.getRootElement();// 獲取根節點
Element element = null;
List<拍絕Resourceitem> resourceitemList = new ArrayList<Resourceitem>();
Resourceitem resourceitem = null;
Field field = null;
for (Iterator i = root.elementIterator(); i.hasNext();) {
element = (Element) i.next();
resourceitem = new Resourceitem();
for (Iterator j = element.elementIterator(); j.hasNext();) {
element = (Element) j.next();
field = Resourceitem.class.getDeclaredField(element
.getQName().getName());
field.setAccessible(true);
field.set(resourceitem, element.getText());
}
resourceitemList.add(resourceitem);
}
System.out.println(resourceitemList.get(0).getTitle());
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
樓主激知你的xml 還少了
</resourceitem>
㈩ dom4j如何讀取一個xml文件的編碼方式
將你Eclipse里的編碼方式改成與文件默認的編碼方式一樣即可。。。