使用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文件中节点值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)