java读取xml信息常用技术有dom解析和dom4J解析
dom4j是最常用的java解析xml技术,在使用时需要下载dom4jjar
具体解析方法可以参考一下内容
xml结构
<books><book id="001">
<title>Harry Potter</title>
<author>J K Rowling</author>
</book>
<book id="002">
<title>Learning XML</title>
<author>Erik T Ray</author>
</book>
</books>
解析为List集合
import javaioFile;import javautilList;
import orgdom4jAttribute;
import orgdom4jDocument;
import orgdom4jElement;
import orgdom4jioSAXReader;
public class Demo {
public static void main(String[] args) throws Exception {
SAXReader reader = new SAXReader();
File file = new File("booksxml");
Document document = readerread(file);
Element root = documentgetRootElement();
List<Element> childElements = rootelements();
for (Element child : childElements) {
//未知属性名情况下
/List<Attribute> attributeList = childattributes();
for (Attribute attr : attributeList) {
Systemoutprintln(attrgetName() + ": " + attrgetValue());
}/
//已知属性名情况下
Systemoutprintln("id: " + childattributeValue("id"));
//未知子元素名情况下
/List<Element> elementList = childelements();
for (Element ele : elementList) {
Systemoutprintln(elegetName() + ": " + elegetText());
}
Systemoutprintln();/
//已知子元素名的情况下
Systemoutprintln("title" + childelementText("title"));
Systemoutprintln("author" + childelementText("author"));
//这行是为了格式化美观而存在
Systemoutprintln();
}
}
}
import w c dom ;
import javax xml parsers ;
import java io ;
public class Parse{
//Document可以看作是XML在内存中的一个镜像 那么一旦获取这个Document 就意味着可以通过对
//内存的 *** 作来实现对XML的 *** 作 首先第一步获取XML相关的Document
private Document doc=null;
public void init(String xmlFile) throws Exception{
//很明显该类是一个单例 先获取产生DocumentBuilder工厂
//的工厂 在通过这个工厂产生一个DocumentBuilder
//DocumentBuilder就是用来产生Document的
DocumentBuilderFactory dbf=DocumentBuilderFactory newInstance();
DocumentBuilder db=dbf newDocumentBuilder();
//这个Document就是一个XML文件在内存中的镜像
doc=db parse(new File(xmlFile));
}
//该方法负责把XML文件的内容显示出来
public void viewXML(String xmlFile) throws Exception{
this init(xmlFile);
//在xml文件里 只有一个根元素 先把根元素拿出来看看
Element element=doc getDocumentElement();
System out println( 根元素为: +element getTagName());
NodeList nodeList=doc getElementsByTagName( dbstore );
System out println( dbstore节点链的长度: +nodeList getLength());
Node fatherNode=em( );
System out println( 父节点为: +fatherNode getNodeName());
//把父节点的属性拿出来
NamedNodeMap attributes=fatherNode getAttributes();
for(int i= ;i<attributes getLength();i++){
Node attribute=em(i);
System out println( dbstore的属性名为: +attribute getNodeName()+ 相对应的属性值为: +attribute getNodeValue());
}
NodeList childNodes = fatherNode getChildNodes();
System out println(childNodes getLength());
for(int j= ;j<childNodes getLength();j++){
Node childNode=em(j);
//如果这个节点属于Element 再进行取值
if(childNode instanceof Element){
//System out println( 子节点名为: +childNode getNodeName()+ 相对应的值为 +childNode getFirstChild() getNodeValue());
System out println( 子节点名为: +childNode getNodeName()+ 相对应的值为 +childNode getFirstChild() getNodeValue());
}
}
}
public static void main(String[] args)throws Exception{
Parse parse=new Parse();
//我的XML文件
parse viewXML( netct xml );
}
lishixinzhi/Article/program/Java/hx/201311/26710
用XPath比较简单点也可以用xmldom
xmltype('<xml version="10" encoding="gbk">
<SERVICE>
<IDA_SVR_USERBILL>
<CALL_METHOD>queryProcessStepList</CALL_METHOD>
</IDA_SVR_USERBILL>
</SERVICE>')extract('//CALL_METHOD/child::text()')getstringval()
测试:
SELECT xmltype('<xml version="10" encoding="gbk">
<SERVICE>
<IDA_SVR_USERBILL>
<CALL_METHOD>queryProcessStepList</CALL_METHOD>
</IDA_SVR_USERBILL>
</SERVICE>')extract('//CALL_METHOD/child::text()')getstringval()
from dual;
已知有一个XML文件(bookstorexml)如下:
<xml version="10" encoding="gb2312">
<bookstore>
<book genre="fantasy" ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>595</price>
</book>
</bookstore>
显示所有数据。
XmlNode xn=xmlDocSelectSingleNode("bookstore");
XmlNodeList xnl=xnChildNodes;
foreach(XmlNode xnf in xnl)
{
XmlElement xe=(XmlElement)xnf;
ConsoleWriteLine(xeGetAttribute("genre"));//显示属性值
ConsoleWriteLine(xeGetAttribute("ISBN"));
XmlNodeList xnf1=xeChildNodes;
foreach(XmlNode xn2 in xnf1)
{
ConsoleWriteLine(xn2InnerText);//显示子节点点文本
}
}
你说的是获取指定id下面的节点的属性值吧!
程序如下,其中equal(“”)双引号中的值为节点的属性值
属性值获取如下:
package saxbuilderibmxmlproperty;
import javaioFile;
import javaioIOException;
import javautilIterator;
import orgdom4jAttribute;
import orgdom4jDocument;
import orgdom4jDocumentException;
import orgdom4jElement;
import orgdom4jioSAXReader;
import orgjdomJDOMException;
import orgjdominputSAXBuilder;
public class XmlProperty {
public Element element;
String path = "D:\\xml\\axml";
public void getElementProperty() {
File file = new File(path);
try {
SAXReader reader = new SAXReader();
Document dc = readerread(file);
Element e = dcgetRootElement();
// 节点值
Element child = (Element) egetQName("COMMAND");
Systemoutprintln(childtoString());
// 一级节点
for (Iterator iterator = eelementIterator(); iteratorhasNext();) {
Element el = (Element) iteratornext();
// 一级节点的属性信息
for (Iterator iterator2 = elattributeIterator(); iterator2
hasNext();) {
Attribute attribute = (Attribute) iterator2next();
if(attributegetName()equals("bodyCategory")){
Systemoutprintln("attributegetName()一级节点的属性信息+"+attributegetName()+attributegetValue());
}else{
Systemoutprintln("attributegetName()一级节点的属性信息+"+attributegetName()+attributegetValue());
}
// 二级节点
for (Iterator iterator3 = elelementIterator(); iterator3
hasNext();) {
Element ele = (Element) iterator3next();
// 二级节点的属性信息
for (Iterator iterator4 = eleattributeIterator(); iterator4
hasNext();) {
Attribute attribute1 = (Attribute) iterator4next();
if(attribute1getName()equals("cmdType")){
Systemoutprintln("attribute1getName()二级节点的属性信息+"+attribute1getName()+"+"+attribute1getValue());
}else{
Systemoutprintln("attribute1getName()二级节点的属性信息+"+attribute1getName()+"+"+attribute1getValue());
}
}
}
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
}
以上就是关于java如何从xml文件中读取一个值全部的内容,包括:java如何从xml文件中读取一个值、JAVA读取xml文件中节点值、oracle 获取xml某个节点的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)