java中用dom4j如何循环XML各个节点,输出属性值到控制台请帮忙写出代码,谢谢!!急急、、急、、

java中用dom4j如何循环XML各个节点,输出属性值到控制台请帮忙写出代码,谢谢!!急急、、急、、,第1张

要读的xml文件

<xml version="10" encoding="GB2312">

<学生花名册>

<学生 性别 = "男">

<姓名>李华</姓名>

<年龄>14</年龄>

</学生>

<学生 性别 = "男">

<姓名>张三</姓名>

<年龄>16</年龄>

</学生>

</学生花名册>

Vector students_Vector;

private Vector readXMLFile(String file) throws Exception {

DocumentBuilderFactory dbf = DocumentBuilderFactorynewInstance();

DocumentBuilder builder = dbfnewDocumentBuilder();

Document doc = builderparse(file); // 获取到xml文件

// 下面开始读取

Element root = docgetDocumentElement(); // 获取根元素

NodeList students = rootgetElementsByTagName_r("学生");

students_Vector = new Vector();

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

// 一次取得每一个学生元素

Element ss = (Element) studentsitem(i);

// 创建一个学生的实例

student stu = new student();

stusetSex(ssgetAttribute("性别"));

NodeList names = ssgetElementsByTagName_r("姓名");

Element e = (Element) namesitem(0);

Node t = egetFirstChild();

stusetName(tgetNodeValue());

NodeList ages = ssgetElementsByTagName_r("年龄");

e = (Element) agesitem(0);

t = egetFirstChild();

stusetAge(IntegerparseInt(tgetNodeValue()));

students_Vectoradd(stu);

}

return students_Vector;

}

参照这个写

创建解析器

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);

}

}

你说的是获取指定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();

}

}

}

下个dom4j包我下面的方法笨了点不知道还有好的不

import javaioFile;

import javautilIterator;

import orgdom4j;

import orgdom4jioSAXReader;

public class ResultXmlTest1 {

public static void main(String args[])

{

SAXReader reader=new SAXReader();

try

{

Document doc=readerread(new File("resultxml"));

Element root=docgetRootElement();

for(Iterator ite=rootelementIterator();itehasNext();)

{

Element ele=(Element)itenext();

for(Iterator iter=eleelementIterator();iterhasNext();)

{

Element elem=(Element)iternext();

//Systemoutprintln(elemgetName());

for(Iterator itera=elemelementIterator();iterahasNext();)

{

Element eleme=(Element)iteranext();

//Systemoutprintln(elemegetName());

for(Iterator iterat=elemeelementIterator();iterathasNext();)

{

Element elemem=(Element)iteratnext();

//Systemoutprintln(elememgetName());

for(Iterator iterato=elememelementIterator();iteratohasNext();)

{

Element elememe=(Element)iteratonext();

//Systemoutprintln(elememegetName());

for(Iterator last=elememeelementIterator();lasthasNext();)

{

Element elemLast=(Element)lastnext();

//Systemoutprintln(elemLastgetName());

for(Iterator at=elemLastattributeIterator();athasNext();)

{

Attribute att=(Attribute)atnext();

if(attgetName()equals("start"))

Systemoutprintln(attgetText());

}

}

}

}

}

}

}

}catch(DocumentException e)

{

eprintStackTrace();

}

}

}

以上就是关于java中用dom4j如何循环XML各个节点,输出属性值到控制台请帮忙写出代码,谢谢!!急急、、急、、全部的内容,包括:java中用dom4j如何循环XML各个节点,输出属性值到控制台请帮忙写出代码,谢谢!!急急、、急、、、java怎么通过xml节点的属性获取这个节点的值、java语句如何获取XML文件的节点值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存