dom4j java 子节点和孙子节点重名,如何只取子节点

dom4j java 子节点和孙子节点重名,如何只取子节点,第1张

使用xpath,假如你的XML文件是:

<xml version="10" encoding="utf-8">

<resources>

    <string id="child">

        <string id="child-child">

        </string>

    </string>

</resources>

那么可以通过如下方式获取子节点

import javaioFile;

import javautilList;

import orgdom4jAttribute;

import orgdom4jDocument;

import orgdom4jDocumentException;

import orgdom4jElement;

import orgdom4jioSAXReader;

/

 

  @author xi

  @since Aug 13, 2014

 /

public class XMLSearch {

    public static void main(final String[] args) {

        final String xmlPath = "/testxml";

        //

        // read

        final SAXReader reader = new SAXReader();

        Document doc;

        try {

            doc = readerread(new File(xmlPath));

        } catch (final DocumentException e) {

            eprintStackTrace();

            return;

        }

        //

        // search and remove element

        final List<> lst = docselectNodes("/resources/string");

        if (lstsize() == 1) {

            final Element elem = (Element) lstget(0);

            final Attribute attr = elemattribute("id");

            if (attr != null) {

                final String id = attrgetText();

                Systemoutprintf("found node, id = %s\n", id);

            }

        } else {

            Systemoutprintln("cannot find node");

        }

        return;

    }

}

List<WebElement> elements = driverfindElements(Byxpath(''//[@class='three_3']/span"));

int num = elementssize();

望采纳

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

导入dom4j包,和jaxen-11-beta-6jar这两个包,后面这个包是支持xpath的包,

使用xpath实现:查询xml中所有name元素的值

/

               //创建解析器

                SAXReader reader = new SAXReader();

                 //得到document

                    Document document = readerread("src/personxml");

                    //使用selectNodes()方法获取元素

                    List<Node> list = documentselectNodes("//name");

                    //遍历list

                    for(Node node:list){

                         //node是一个name元素

                         //获取name的值

                         String s = nodegetText();

                         Systemoutprintln(s);

                    }

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

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

}

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 attrs = rootattributes();

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

Systemerrprint(prefix);

for (Attribute attr : attrs) {

Systemerrprint(attrgetValue() + " ");

}

Systemerrprintln();

}

// 获取他的子节点

List childNodes = rootelements();

prefix += "\t";

for (Element e : childNodes) {

//输出内容

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

readNode(e, prefix);

}

}

以上就是关于dom4j java 子节点和孙子节点重名,如何只取子节点全部的内容,包括:dom4j java 子节点和孙子节点重名,如何只取子节点、selenium java,如何获取xpath重的子节点、JAVA读取xml文件中节点值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存