import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
public class Jdom{
private static void parse(String fileName){
SAXBuilder builder=new SAXBuilder();
try{
Document doc=builder.build(fileName);
listNodes(doc,0); //递规调用,遍历所有元素的属性,将结果俺组存入临时ArrayList中
}
catch(JDOMException e){
System.out.println(e.getMessage());
}
catch(IOException e){
System.out.println(e);
}
}
/*
* 递规调用,遍历所有元素属性
*/
private static void listNodes(Object o, int depth) {
if(o instanceof Element){
Element element=(Element) o;
System.out.println(element.getName()+" ");
if(element.getName()=="interfaceConfig"){
String a=element.getAttributeValue("resource");
System.out.println(element.getName()+" "+"="+a);
}
List children = element.getContent();
Iterator iterator=children.iterator();
while(iterator.hasNext()){
Object child=iterator.next();
listNodes(child,depth+1);
}
}
else if(o instanceof Document){
Document doc=(Document) o;
List children=doc.getContent();
Iterator iterator=children.iterator();
while(iterator.hasNext()){
Object child=iterator.next();
listNodes(child,depth+1);
}
}
}
public static void main(String[] args) {
String fileName="sconfig.xml";
Jdom test=new Jdom();
test.parse(fileName);
}
}
下面是xml文件,文件名为sconfig.xml
<?xml version="1.0"?>
<sconfig>
<interfaceConfig resource="c:/configuration.xml"/>
<interfaceConfig resource="c:/configuration1.xml"/>
<interfaceConfig resource="c:/configuration2.xml"/>
</sconfig>
下面是结果:
sconfig
interfaceConfig
interfaceConfig =c:/configuration.xml
interfaceConfig
interfaceConfig =c:/configuration1.xml
interfaceConfig
interfaceConfig =c:/configuration2.xml
可以看到,这个文件把xml里的所有元素和属性都列出来了,我这个方法是要特定解析文件里的某个属性,把它读出来,之后读者可以自己处理。当然,我这个方法稍微改一下就可以适应其他的情况。请读者自己着一下JDOM的书看一下就好了,另外本人推荐一本叫JAVA语言与XML处理教程的书,本人看了,受益非浅,呵呵。
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
public class Jdom{
private static void parse(String fileName){
SAXBuilder builder=new SAXBuilder();
try{
Document doc=builder.build(fileName);
listNodes(doc,0); //递规调用,遍历所有元素的属性,将结果俺组存入临时ArrayList中
}
catch(JDOMException e){
System.out.println(e.getMessage());
}
catch(IOException e){
System.out.println(e);
}
}
/*
* 递规调用,遍历所有元素属性
*/
private static void listNodes(Object o, int depth) {
if(o instanceof Element){
Element element=(Element) o;
System.out.println(element.getName()+" ");
if(element.getName()=="interfaceConfig"){
String a=element.getAttributeValue("resource");
System.out.println(element.getName()+" "+"="+a);
}
List children = element.getContent();
Iterator iterator=children.iterator();
while(iterator.hasNext()){
Object child=iterator.next();
listNodes(child,depth+1);
}
}
else if(o instanceof Document){
Document doc=(Document) o;
List children=doc.getContent();
Iterator iterator=children.iterator();
while(iterator.hasNext()){
Object child=iterator.next();
listNodes(child,depth+1);
}
}
}
public static void main(String[] args) {
String fileName="sconfig.xml";
Jdom test=new Jdom();
test.parse(fileName);
}
}
下面是xml文件,文件名为sconfig.xml
<?xml version="1.0"?>
<sconfig>
<interfaceConfig resource="c:/configuration.xml"/>
<interfaceConfig resource="c:/configuration1.xml"/>
<interfaceConfig resource="c:/configuration2.xml"/>
</sconfig>
下面是结果:
sconfig
interfaceConfig
interfaceConfig =c:/configuration.xml
interfaceConfig
interfaceConfig =c:/configuration1.xml
interfaceConfig
interfaceConfig =c:/configuration2.xml
可以看到,这个文件把xml里的所有元素和属性都列出来了,我这个方法是要特定解析文件里的某个属性,把它读出来,之后读者可以自己处理。当然,我这个方法稍微改一下就可以适应其他的情况。请读者自己着一下JDOM的书看一下就好了,另外本人推荐一本叫JAVA语言与XML处理教程的书,本人看了,受益非浅,呵呵。

本文介绍了一个使用Java JDOM库解析XML文件的具体示例,重点展示了如何递归地获取XML文件中指定节点的属性。
4514

被折叠的 条评论
为什么被折叠?



