java中dom4j解析xml文件怎么获取节点属性

java中dom4j解析xml文件怎么获取节点属性,第1张

dom4j中,使用Elementattributes方法可以获取到节点属性,而使用elements则可以获取相应的子节点

比如:

Element root = docgetRootElement();

List attrList = rootattributes();

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

//属性的取得

Attribute item = (Attribute)attrListget(i);

Systemoutprintln(itemgetName() + "=" + itemgetValue());

}

List childList = rootelements();

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

//子节点的 *** 作

Element it = (Element) childListget(i);

//对子节点进行其它 *** 作

}

using SystemXml;

XmlDocument xmlDoc = new XmlDocument();

xmlDocLoad(ServerMapPath("这里是你的XML的地址"));

XmlNode cNodes = xmlDocSelectSingleNode("columns");

for (int i = 0; i < cNodesChildNodesCount; i++)

{

XmlNode c = cNodesChildNodes[i];

cAttributes["hidden"]Value; //这里就取到hidden的值

cAttributes["show"]Value; // 这里就取到show的值

}

field="name" 这个也是节点属性啊。

大哥,代码很详细了吧,给分,给分!!!!!!!

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

java中获取xml节点元素值 根据不同的处理xml方式不同而不同。

java中解析xml的方式:大体可以使用以下四种

------------------------------------------------------------

DOM(Document Object Model)

为 XML 文档的已解析版本定义了一组接口。解析器读入整个文档,

然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来 *** 作这个树结构。

优点:整个文档树在内存中,便于 *** 作;支持删除、修改、重新排列等多种功能;

缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;

使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)

SAX(Simple API for XML)

为解决DOM的问题,出现了SAX。SAX ,事件驱动。

当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,

程序员编写响应这些事件的代码,保存数据。优点:不用事先调入整个文档,占用资源少;

SAX解析器代码比DOM解析器代码小,适于Applet,下载。

缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;无状态性;

从事件中只能得到文本,但不知该文本属于哪个元素;

使用场合:Applet;只需XML文档的少量内容,很少回头访问;机器内存少;

DOM4J

DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,

同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML,

特别值得一提的是连 Sun 的 JAXM 也在用 DOM4J

JDOM

为减少DOM、SAX的编码量,出现了JDOM;优点:20-80原则,极大减少了代码量。

使用场合:要实现的功能简单,如解析、创建等,但在底层,JDOM还是使用SAX(最常用)、DOM、Xanan文档。

------------------------------

参考代码

dom4j

------------------------------

import orgdom4jDocument;

import orgdom4jDocumentException;

import orgdom4jDocumentHelper;

import orgdom4jElement;

import orgdom4jioSAXReader;

import orgdom4jioXMLWriter;

---------------------------------------------

File f = new File("studentsxml");

SAXReader reader = new SAXReader();

Document doc = readerread(f);

Element root = docgetRootElement();

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

Element element = (Element) iternext();

// Systemoutprintln(elementattributeValue("email"));

String ids=elementelementText("stuId");

Systemoutprintln(ids);

String names=elementelementText("stuName");

Systemoutprintln(names);

String ages=elementelementText("age");

Systemoutprintln(ages);

}

------------------------------------

dom 方式

---------------

import javaxxmlparsers;

import javaxxmltransform;

import javaxxmltransformdomDOMSource;

import javaxxmltransformstreamStreamResult;

------------------------

DocumentBuilderFactory factory = DocumentBuilderFactorynewInstance();

// 允许名字空间

// factorysetNamespaceAware(true);

// 允许验证

// factorysetValidating(true);

// 获得DocumentBuilder的一个实例

DocumentBuilder builder = null;

try {

builder = factorynewDocumentBuilder();

} catch (ParserConfigurationException pce) {

Systemerrprintln(pce);

// 出异常时输出异常信息,然后退出,下同

Systemexit(1);

}

Document doc = null;

// 解析文档,并获得一个Document实例。

try {

try {

// InputStream is=new FileInputStream("studentsxml");

doc = builderparse("studentsxml");

// doc = builderparse(is);

} catch (SAXException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

} catch (DOMException dom) {

Systemerrprintln(domgetMessage());

Systemexit(1);

} catch (IOException ioe) {

Systemerrprintln(ioe);

// Systemexit(1);

}

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

Element elmtStudent = (Element) nlStudentitem(i);

String email = elmtStudentgetAttribute("email");

Systemoutprintln(email);

NodeList ids = elmtStudentgetElementsByTagName("stuId");

Element id = (Element)idsitem(0);

Node tId = idgetFirstChild();

Systemoutprintln(tIdgetNodeValue());

NodeList names = elmtStudentgetElementsByTagName("stuName");

Element e = (Element)namesitem(0);

Node tName = egetFirstChild();

Systemoutprintln(tNamegetNodeValue());

}

以上就是关于java中dom4j解析xml文件怎么获取节点属性全部的内容,包括:java中dom4j解析xml文件怎么获取节点属性、C#如何读取xml文件里面节点里面的属性信息、JAVA读取xml文件中节点值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/web/9458271.html

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

发表评论

登录后才能评论

评论列表(0条)

保存