㈠ 如何用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里的编码方式改成与文件默认的编码方式一样即可。。。