【Java–XML】JDOM解析XML字符串(非XML文档)
2010-04-08 17:15
399 查看
package cmo.shubai.jdom;
import java.io.IOException;
import java.io.StringReader;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;
import org.xml.sax.InputSource;
public class DuXMLDoc {
public List xmlElements(String xmlDoc) {
//创建一个新的字符串
StringReader read = new StringReader(xmlDoc);
//创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
InputSource source = new InputSource(read);
//创建一个新的SAXBuilder
SAXBuilder sb = new SAXBuilder();
try {
//通过输入源构造一个Document
Document doc = sb.build(source);
//取的根元素
Element root = doc.getRootElement();
System.out.println(root.getName());//输出根元素的名称(测试)
//得到根元素所有子元素的集合
List jiedian = root.getChildren();
//获得XML中的命名空间(XML中未定义可不写)
Namespace ns = root.getNamespace();
Element et = null;
for(int i=0;i et = (Element) jiedian.get(i);//循环依次得到子元素
/**//*
* 无命名空间定义时
* et.getChild("users_id").getText();
* et.getChild("users_address",ns).getText()
*/
System.out.println(et.getChild("users_id",ns).getText());
System.out.println(et.getChild("users_address",ns).getText());
}
/**//*
* 如要取下的子元素的名称
*/
et = (Element) jiedian.get(0);
List zjiedian = et.getChildren();
for(int j=0;j Element xet = (Element) zjiedian.get(j);
System.out.println(xet.getName());
}
} catch (JDOMException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return null;
}
public static void main(String[] args){
DuXMLDoc doc = new DuXMLDoc();
String xml = "“+
““+
““+
“1001 “+
“wangwei “+
“80 “+
“1001号 “+
““+
““+
“1002 “+
“wangwei “+
“80 “+
“1002号 “+
““+
““;
doc.xmlElements(xml);
}
}
以上的例子和实际稍有出入-这个例子主要是用来演示JDOM解析XML字符串
JDOM处理带Namespace的XML文件
最近在开发中遇到读取XML文件出现的一些问题-JDOM技术读取
1
2
3
4 1001
5 wangwei
6 80
7 1001号
8
9
10 1002
11 wangwei
12 80
13 1002号
14
15
16 1003
17 wangwei
18 80
19 1003号
20
21
22 1004
23 wangwei
24 80
25 1004号
26
27
代码当中 xmlns=”http://www.fiorano.com/fesb/activity/DBQueryOnInput2/Out”>
是这个XML文件的命名空间(Namespace)读取该文档的元素值时必须指定其命名空间不然会产生java.lang.NullPointerException 空指针异常
实际执行代码
public class DuXMLTest2 {
public void loadXMLdoc(){
FileInputStream fi = null;
try {
fi = new FileInputStream("Test.xml");
SAXBuilder sb = new SAXBuilder();
try {
Document doc = sb.build(fi);
Element root = doc.getRootElement();
Namespace ns = root.getNamespace();
List jiedian = root.getChildren();
Element et = null;
for(int i=0;i et = (Element) jiedian.get(i);
System.out.println(et.getChild("users_id",ns).getText());
}
} catch (JDOMException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
public static void main(String[] args){
DuXMLTest2 dt = new DuXMLTest2();
dt.loadXMLdoc();
}
import java.io.IOException;
import java.io.StringReader;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;
import org.xml.sax.InputSource;
public class DuXMLDoc {
public List xmlElements(String xmlDoc) {
//创建一个新的字符串
StringReader read = new StringReader(xmlDoc);
//创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
InputSource source = new InputSource(read);
//创建一个新的SAXBuilder
SAXBuilder sb = new SAXBuilder();
try {
//通过输入源构造一个Document
Document doc = sb.build(source);
//取的根元素
Element root = doc.getRootElement();
System.out.println(root.getName());//输出根元素的名称(测试)
//得到根元素所有子元素的集合
List jiedian = root.getChildren();
//获得XML中的命名空间(XML中未定义可不写)
Namespace ns = root.getNamespace();
Element et = null;
for(int i=0;i et = (Element) jiedian.get(i);//循环依次得到子元素
/**//*
* 无命名空间定义时
* et.getChild("users_id").getText();
* et.getChild("users_address",ns).getText()
*/
System.out.println(et.getChild("users_id",ns).getText());
System.out.println(et.getChild("users_address",ns).getText());
}
/**//*
* 如要取下的子元素的名称
*/
et = (Element) jiedian.get(0);
List zjiedian = et.getChildren();
for(int j=0;j Element xet = (Element) zjiedian.get(j);
System.out.println(xet.getName());
}
} catch (JDOMException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return null;
}
public static void main(String[] args){
DuXMLDoc doc = new DuXMLDoc();
String xml = "“+
““+
““+
“1001 “+
“wangwei “+
“80 “+
“1001号 “+
““+
““+
“1002 “+
“wangwei “+
“80 “+
“1002号 “+
““+
““;
doc.xmlElements(xml);
}
}
以上的例子和实际稍有出入-这个例子主要是用来演示JDOM解析XML字符串
JDOM处理带Namespace的XML文件
最近在开发中遇到读取XML文件出现的一些问题-JDOM技术读取
1
2
3
4 1001
5 wangwei
6 80
7 1001号
8
9
10 1002
11 wangwei
12 80
13 1002号
14
15
16 1003
17 wangwei
18 80
19 1003号
20
21
22 1004
23 wangwei
24 80
25 1004号
26
27
代码当中 xmlns=”http://www.fiorano.com/fesb/activity/DBQueryOnInput2/Out”>
是这个XML文件的命名空间(Namespace)读取该文档的元素值时必须指定其命名空间不然会产生java.lang.NullPointerException 空指针异常
实际执行代码
public class DuXMLTest2 {
public void loadXMLdoc(){
FileInputStream fi = null;
try {
fi = new FileInputStream("Test.xml");
SAXBuilder sb = new SAXBuilder();
try {
Document doc = sb.build(fi);
Element root = doc.getRootElement();
Namespace ns = root.getNamespace();
List jiedian = root.getChildren();
Element et = null;
for(int i=0;i et = (Element) jiedian.get(i);
System.out.println(et.getChild("users_id",ns).getText());
}
} catch (JDOMException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
public static void main(String[] args){
DuXMLTest2 dt = new DuXMLTest2();
dt.loadXMLdoc();
}
相关文章推荐
- java JDOM解析XML字符串(非XML文档)
- java的xml学习[JDOM方式解析XML文档]
- java使用jdom架包解析xml字符串dom原理并保存map对象
- java与xml之JDOM生成和解析XML文档
- JDOM解析XML字符串(非XML文档)
- java与xml之JDOM生成和解析XML文档
- [Java开发之路](12)JDOM和DOM4J解析XML文档
- Java学习之路——利用JDOM对xml文档进行解析等操作实例
- java用jdom生成xml文档或字符串
- java使用dom4j解析xml字符串
- Java&Xml教程(六)使用JDOM解析XML文件
- org.w3c.dom(java dom)解析XML文档
- Java 之用jdom 解析XML(一)
- java之jdom解析xml(二)
- JDom解析和生成XML文档
- java 解析xml的四种方式:sax,dom,dom4j,jdom
- Java中解析XML的四种常用方法(3)_JDOM解析
- [JAVA100例]070、使用JDOM解析XML
- Java---DOM解析XML文档详解实例
- java 中dom4j 解析xml文档