用dom4j解析XML如何找到一个节点的子结点

用dom4j解析XML如何找到一个节点的子结点,第1张

方法一:

root = DocumentHelperparseText(datas)getRootElement();

int num=-1;

//遍历根结点(books)的所有孩子节点(book节点)

for ( Iterator iter = rootelementIterator(); iterhasNext(); ) {

Element element = (Element) iternext();

num++;

//遍历book结点的所有孩子节点(即title),并进行处理

for ( Iterator iterInner = elementelementIterator(); iterInnerhasNext(); ) {

Element elementInner = (Element) iterInnernext();

String a=elementInnergetName();//节点的名称,如title

String b=elementInnergetText();//节点的内容,如title标签里的内容

}

方法二

books = DocumentHelperparseText(datas)getRootElement();

Element book = null;

Element title = null;

List list = books elements("book");

for (int i = 0; i < listsize(); i++) {

book = (Element) listget(i);

List listfile = book elements("title ");

string a=((Element) listfileget(0))getTextTrim();//Dom4j Tutorials

string b=((Element) listfileget(1))getTextTrim();//Lucene Studing

}

这个很简单,上代码吧

try {

String strXML = "你的XML字符串";

Document document = DocumentHelperparseText(strXML);

Node node = documentselectSingleNode('examples/example/examplemain/a');

Systemoutprintln(nodegetText());

node = documentselectSingleNode('examples/example/examplemain/b');

Systemoutprintln(nodegetText());

node = documentselectSingleNode('examples/example/examplemain/c');

Systemoutprintln(nodegetText());

} catch (DocumentException ex) {

exprintStackTrace();

}

你的里面就没有属性我自己在下面三个节点加了点,xml文件要放在项目的根目录下

<result has="1">0</result>

<name has="2">姓名</name>

<name has="3">个人编号</name>

下面这是代码:记得引入dom4j包

package thread;

import javaioFile;

import javautilIterator;

import orgdom4jAttribute;

import orgdom4jDocument;

import orgdom4jDocumentException;

import orgdom4jElement;

import orgdom4jioSAXReader;

public class msgXml {

public static void main(String args[])

{

SAXReader read=new SAXReader();

File file=new File("msgxml");

try

{

Document doc=readread(file);

Element root=docgetRootElement();

Systemoutprintln("下面是name的值:");

//先得到body节点

for(Iterator it=rootelementIterator("body");ithasNext();)

{

Element itt=(Element)itnext();

//再得到body下的name节点,再得到值

for(Iterator text=ittelementIterator("name");texthasNext();)

{

Element textt=(Element)textnext();

Systemoutprintln(texttgetText());

}

Systemoutprintln("属性都为has的节点:");

for(Iterator te=ittelementIterator();tehasNext();)

{

Element tex=(Element)tenext();

for(Iterator atn=texattributeIterator();atnhasNext();)

{

Attribute attn=(Attribute)atnnext();

//属性相同的节点名

if(attngetName()equals("has"))

{

Systemoutprintln(texgetName());

}

}

}

}

}catch(DocumentException e)

{

eprintStackTrace();

}

}

}

创建解析器

SAXReader saxreader = new SAXReader();

读取文档

Document doc = saxreaderread(new File("url"));

获取根

Element root = docgetRootElement();

获取子节点

List<Element> list = rootelements();

Systemoutprintln(eelementText("name"));

Systemoutprintln(eelement("score")attributeValue("java"));

Reader reader = new InputStreamReader(con

getInputStream());

SAXReader sax = new SAXReader();

// saxsetEncoding("GBK");

Document document = saxread(reader);

documentsetXMLEncoding("GBK");

Element root = documentgetRootElement();

// Document doc = readerread(read);

// Element root = docgetRootElement();

readNode(root, "");

public static void readNode(Element root, String prefix) {

if (root == null) return;

// 获取属性

List<Attribute> attrs = rootattributes();

if (attrs != null && attrssize() > 0) {

Systemerrprint(prefix);

for (Attribute attr : attrs) {

Systemerrprint(attrgetValue() + " ");

}

Systemerrprintln();

}

// 获取他的子节点

List<Element> childNodes = rootelements();

prefix += "\t";

for (Element e : childNodes) {

//输出内容

Systemerrprintln(egetName()+":"+egetData());

readNode(e, prefix);

}

}

可以通过元素中的getText方法获取到节点的内容。

举例:

SAXReader sax = new SAXReader();

Document document = saxread(reader);//reader为定义的一个字符串,可以转换为xml

Element root = documentgetRootElement();//获取到根节点元素String str = root getText()//获取到节点的内容

用到的是dom4j-161jar,需要引入的包是:

import orgdom4jDocument;

import orgdom4jDocumentException;

import orgdom4jElement;

import orgdom4jioSAXReader;

备注:如果是多个子节点可以通过”Element xx=root element("code")“获取到子节点的元素,前提是需要知道子节点的名称。

以上就是关于用dom4j解析XML如何找到一个节点的子结点全部的内容,包括:用dom4j解析XML如何找到一个节点的子结点、Axis中如何通过dom4j获取xml文件中节点的值(不是属性,是节点中间的字符串)、dom4j如何取属性相同的各个节点,急,请高手帮忙,如何循环得到name的植等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9278097.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存