dom4j获取指定节点1
- 格式:docx
- 大小:22.60 KB
- 文档页数:5
Dom4j应用中常用方法总结一:构建dom4j树(表示为Document 元素)常用方法:方式一:直接创建所有元素:dom4j为我们准备了工具类DocumentHelper ,该类的所有的方法都是静态方法,用来创建xml文档的各个组成部分。
1.1.1创建Document 和Element对象:Document doc=DocumentHelper.createDocument();Element eltRoot=DocumentHelper.createElement(“student”);doc.setEltRootElement(eltRoot);1.1.2或者先准备好根元素,使用有参数的构造方法创建Document对象。
Element eltRoot=DocumentHelper.createElement(“student”);Document doc=DocumentHelper.createDocument(eltRoot);1.2:添加节点和设置节点内容:方法:Branch 接口中定义的方法;public Element addElemen(String name) //以指定的name 为当前节点创建一个子节点,并返回新节点的引用public void setText(String text) //将content设置为节点的内容示例如下:Element eltName=eltRoot.addElement(“name”);Element eltAge=eltRoot.addElement(“age”);eltName.setText(“张三”);eltAge.setText(“18”);1.3:添加属性方法:public Element addAttribute(String name,String value)示例如下:eltRoot.addAttribute(“sn”,”01”);方式2:2.1:org.dom4j.io提供了两个类:SAXReader和DOMReader,前者从一个现有的w3c DOM 树构建dom4j树,而SAXReader则使用SAX解析器,从不同的输入源构建dom4j树。
Dom4j使⽤Xpath语法读取xml节点<span style="font-size: small;" mce_style="font-size: small;">package com.wt.dom4j;import java.util.List;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.SAXReader;/*** Dom4j基础操作** @author wTang* @editTime 2011年3⽉16⽇0:38:10**/public class Dom4jParser {public static void main(String[] args) {try {SAXReader sax = new SAXReader();// 获得dom4j的⽂档对象Document root = sax.read(Dom4jParser.class.getClassLoader().getResourceAsStream("employee.xml"));// 得到database节点Element database = (Element) root.selectSingleNode("//employee[@id='2']");List list = database.elements(); // 得到database元素下的⼦元素集合/** 循环遍历集合中的每⼀个元素将每⼀个元素的元素名和值在控制台中打印出来*/for (Object obj : list) {Element element = (Element) obj;// getName()是元素名,getText()是元素值System.out.println(element.getName() + ": " + element.getText());}} catch (Exception e) {e.printStackTrace();}}}</span>表达式:Element database = (Element) root.selectSingleNode("//employee[@id='2']");输出为:name: wTang2age: 20high: 180表达式: Element database = (Element) root.selectSingleNode("/root/employee[1]");输出为:name: wTangage: 19high: 173我们可以给id⾥⾯的值做个参数, 封装为⽅法即可给外界调⽤.// 表⽰从匹配选择的当前节点选择⽂档中的节点,⽽不考虑它们的位置。
Dom对象的常用方法:(1)getElementById() 查询给定ID属性值的元素,返回该元素的元素节点1、查询给定ID属性值的元素,返回该元素的元素节点。
也称为元素对象。
2、因为在一个html页面中id的值是唯一的,所以返回值也是唯一的。
所以方法的名称为getElementById()而不是getElementsById()3、该方法只能用于document对象,类似与java的static关键字。
(2)getElementsByName()查找给定name属性的所有元素,这个方法将返回一个节点集合,也可以称为对象集合1、查找给定name属性的所有元素,这个方法将返回一个节点集合,也可以称为对象集合。
2、这个集合可以作为数组来对待,length属性的值表示集合的个数。
3、因为在html页面中,name不能唯一确定一个元素,所以方法的名称为getElementsByName而不是getElementByName(3)getElementsByTagName()查询给定标签名的所有元素1、查询给定标签名的所有元素2、因为在html页面中,标签名不是唯一的,所以返回值为节点的集合。
3、这个集合可以当做数组来处理,length属性为集合里所有元素的个数4、可以有两种形式来执行这个方法:1、var elements =document.getElementsByTagName(tagName);2、var elements = element.getElementsByTagName(tagName);5、从这两种方法可以看出持有这个方法的对象并不一定是整个文档对象(document).也可以是某一个元素节点。
(4)hasChildNodes()该方法用来判断一个元素是否有子节点,返回值为true或者false1、该方法用来判断一个元素是否有子节点2、返回值为true或者false3、文本节点和属性节点不可能再包含子节点,所以对于这两类节点使用ChildNodes()方法返回值永远为false.4、如果hasChildNodes()返回值为false,则childNodes,firstChild,lastChild 将为空数组或者空字符串。
jQuery获取DOM节点的两种⽅式中包裹后的DOM对象实际上是⼀个数组,要获得纯粹的DOM对象可以有两种⽅式:1、使⽤数组索引⽅式访问,例如:var dom = $(dom)[0];如: $("#id")[0]2、使⽤函数get()访问,例如:var dom = $(dom).get(0);get()函数中的参数为索引号。
什么是jQuery对象?就是通过jQuery包装DOM对象后产⽣的对象。
jQuery对象是jQuery独有的,其可以使⽤jQuery⾥的⽅法。
⽐如:$("#test").html() 意思是指:获取ID为test的元素内的html代码。
其中html()是jQuery⾥的⽅法这段代码等同于⽤DOM实现代码:document.getElementById("id").innerHTML;jQuery对象转成DOM对象:两种转换⽅式将⼀个jQuery对象转换成DOM对象:[index]和.get(index);1)jQuery对象是⼀个数据对象,可以通过[index]的⽅法,来得到相应的DOM对象。
var $v =$("#v") ; //jQuery对象var v=$v[0]; //DOM对象alert(v.checked) //检测这个checkbox是否被选中2)jQuery本⾝提供,通过.get(index)⽅法,得到相应的DOM对象var $v=$("#v"); //jQuery对象var v=$v.get(0); //DOM对象alert(v.checked) //检测这个checkbox是否被选中DOM对象转成jQuery对象:对于已经是⼀个DOM对象,只需要⽤$()把DOM对象包装起来,就可以获得⼀个jQuery对象了。
$(DOM对象)如:var v=document.getElementById("v"); //DOM对象var $v=$(v); //jQuery对象jQuery对象与dom对象的转换则为jquery对象,可以使⽤jquery的⽅法。
Dom4j下载及使用Dom4j读写XML简介要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在/目前最新dom4j包下载地址:/sourceforge/dom4j/dom4j-1.6.1.zip解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就可以了,如果需要使用XPath的话还需要加入包jaxen-1.1-beta-7.jar.以下是相关操作:一.Document对象相关1.读取XML文件,获得document对象.SAXReader reader = new SAXReader();Document document = reader.read(new File("input.xml"));2.解析XML形式的文本,得到document对象.String text = "<members></members>";Document document = DocumentHelper.parseText(text);3.主动创建document对象.Document document = DocumentHelper.createDocument();Element root = document.addElement("members");// 创建根节点二.节点相关1.获取文档的根节点.Element rootElm = document.getRootElement();2.取得某节点的单个子节点.Element memberElm=root.element("member");// "member"是节点名3.取得节点的文字String text=memberElm.getText();也可以用:String text=root.elementT ext("name");这个是取得根节点下的name字节点的文字.4.取得某节点下名为"member"的所有字节点并进行遍历.List nodes = rootElm.elements("member");for (Iterator it = nodes.iterator(); it.hasNext();) {Element elm = (Element) it.next();// do something}5.对某节点下的所有子节点进行遍历.for(Iterator it=root.elementIterator();it.hasNext();){Element element = (Element) it.next();// do something}6.在某节点下添加子节点.Element ageElm = newMemberElm.addElement("age");7.设置节点文字.ageElm.setText("29");8.删除某节点.parentElm.remove(childElm);// childElm是待删除的节点,parentElm是其父节点三.属性相关.1.取得某节点下的某属性Element root=document.getRootElement();Attribute attribute=root.attribute("size");// 属性名name2.取得属性的文字String text=attribute.getText();也可以用:String text2=root.element("name").attributeValue("firstname");这个是取得根节点下name字节点的属性firstname的值.3.遍历某节点的所有属性Element root=document.getRootElement();for(Iterator it=root.attributeIterator();it.hasNext();){Attribute attribute = (Attribute) it.next();String text=attribute.getText();System.out.println(text);}4.设置某节点的属性和文字.newMemberElm.addAttribute("name", "sitinspring");5.设置属性的文字Attribute attribute=root.attribute("name");attribute.setText("sitinspring");6.删除某属性Attribute attribute=root.attribute("size");// 属性名nameroot.remove(attribute);四.将文档写入XML文件.1.文档中全为英文,不设置编码,直接写入的形式.XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));writer.write(document);writer.close();2.文档中含有中文,设置编码格式写入的形式.OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("GBK"); // 指定XML编码XMLWriter writer = new XMLWriter(new FileWriter("output.xml"),format);writer.write(document);writer.close();五.字符串与XML的转换1.将字符串转化为XMLString text = "<members> <member>sitinspring</member> </members>";Document document = DocumentHelper.parseText(text);2.将文档或节点的XML转化为字符串.SAXReader reader = new SAXReader();Document document = reader.read(new File("input.xml"));Element root=document.getRootElement();String docXmlText=document.asXML();String rootXmlText=root.asXML();Element memberElm=root.element("member");String memberXmlText=memberElm.asXML();六.使用XPath快速找到节点.读取的XML文档示例<?xml version="1.0" encoding="UTF-8"?><projectDescription><name>MemberManagement</name><comment></comment><projects><project>PRJ1</project><project>PRJ2</project><project>PRJ3</project><project>PRJ4</project></projects><buildSpec><buildCommand><name>org.eclipse.jdt.core.javabuilder</name><arguments></arguments></buildCommand></buildSpec><natures><nature>org.eclipse.jdt.core.javanature</nature></natures></projectDescription>使用XPath快速找到节点project.public static void main(String[] args){SAXReader reader = new SAXReader();try{Document doc = reader.read(new File("sample.xml"));List projects=doc.selectNodes("/projectDescription/projects/project"); Iterator it=projects.iterator();while(it.hasNext()){Element elm=(Element)it.next();System.out.println(elm.getText()); }}catch(Exception ex){ex.printStackTrace();}}。
Dom4j向XML中指定位置添加、删除、修改节点——(五)需求: 在第⼀本书作者后⾯增加描述 <描述>好书</描述> 思路:获取书下⾯下的所有节点(⼀个list集合),在list集合指定位置添加⼀个元素(list.add(index,object)),最后写⼊原xml⽂档。
原来XML⽂档1<?xml version="1.0" encoding="utf-8"?>23<书架>4<书>5<书名>Java⾼级</书名>6<作者>武陟县</作者>7<价格>200元</价格>8</书>9<书>10<书名 name="xxxxxxxxxxx">Java中级</书名>11<作者>打⽕机</作者>12<价格>2000元</价格>13</书>14</书架>-------------------------------------------------------指定位置添加节点-------------------------------------Java代码:1// 在指定位置添加⼀个节点2 @Test3public void test2() throws Exception {4 SAXReader reader = new SAXReader();5 Document document = reader.read(new File("src/book.xml"));6 Element root = document.getRootElement();78// 获取第⼀个书节点9 Element shu = (Element) root.elements("书").get(0);10// 获取第⼀个节点下的所有节点11 List list = shu.elements(); //[书名,作者,价格]1213// 创建⼀个节点14 Element miaoshu = DocumentHelper.createElement("miaoshu");15 miaoshu.setText("⼀本好书");16 list.add(2,miaoshu);1718// 格式化输出流,同时指定编码格式。
Javascript获取元素节点的六种⽅法(Dom)Javascript中,Dom节点常见的只有三种:分别是元素节点,属性节点,⽂本节点。
我们可以⽤nodeType值来判断节点的类型,它们对应的nodeType属性值分别是1,2,3。
⽽获取元素节点,有六种⽅式。
1.getElementById()通过id来选中元素。
使字变成红⾊。
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><div id="div1">Javascript</div></body><script>function func() {var oDiv = document.getElementById("div1");oDiv.style.color = "red";}func()</script></html>2.getElementsByTagName()通过标签名来选中元素。
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><ul id="list"><li>HTML</li><li>CSS</li><li>Javascript</li><li>jQuery</li><li>Vue.js</li></ul></body><script>function func() {var oUl = document.getElementById("list");var oList = document.getElementsByTagName("li");oList[2].style.color = "red";}func()</script></html>结果:3.getElementsByClassName()通过类名来获取元素。
dom4j xpath语法一、什么是dom4j xpath语法dom4j是一个用于操作XML文档的Java开源库,它提供了一种简单而强大的方式来使用xpath语法对XML文档进行解析和查询。
xpath 是一种用于在XML文档中定位节点的语言,它可以通过路径表达式来选择节点或节点集合。
二、dom4j xpath语法的基本用法1. 选择节点使用xpath语法可以选择XML文档中的节点,例如:- 选择根节点:/- 选择当前节点:.- 选择子节点:/- 选择父节点:..- 选择属性节点:/@属性名2. 谓语谓语可以用于过滤节点,例如:- 选择所有属性为id的节点://节点名[@属性名='属性值']- 选择第一个子节点:/节点名[1]3. 选择节点集合使用xpath语法可以选择多个节点,例如:- 选择所有子节点:/节点名/*- 选择所有后代节点://节点名- 选择所有具有相同父节点的节点:/节点名1 | /节点名24. 选择文本内容使用xpath语法可以选择节点中的文本内容,例如:- 选择节点中的文本内容:/节点名/text()- 选择节点及其后代节点中的文本内容://节点名/text()5. 使用通配符通配符可以用于匹配节点名,例如:- 选择所有节点://*- 选择所有具有相同父节点的节点:/节点名/*三、dom4j xpath语法的高级用法1. 使用函数xpath语法支持多种内置函数,例如:- 选择所有包含指定文本的节点://节点名[contains(text(),'文本内容')]- 选择所有具有指定属性的节点://节点名[@属性名]2. 使用轴轴可以用于选择相对于当前节点的节点,例如:- 选择当前节点的所有子节点:child::- 选择当前节点的所有父节点:parent::- 选择当前节点的所有祖先节点:ancestor::- 选择当前节点的所有后代节点:descendant::四、dom4j xpath语法的实例应用假设有以下XML文档:```<bookstore><book category="web"><title lang="en">Learning XML</title><author>Erik T. Ray</author><year>2003</year><price>39.95</price></book><book category="web"><title lang="en">XQuery Kick Start</title> <author>James McGovern</author><year>2003</year><price>49.99</price></book><book category="programming"><title lang="en">Java Programming</title> <author>John Doe</author><year>2005</year><price>59.99</price></book></bookstore>```我们可以使用dom4j xpath语法来查询和操作这个XML文档,例如:- 选择所有book节点://book- 选择所有category属性为web的book节点://book[@category='web']- 选择所有title节点的文本内容://title/text()- 选择第一个book节点的author节点的文本内容://book[1]/author/text()五、dom4j xpath语法的注意事项1. xpath语法区分大小写,要注意节点名和属性名的大小写。
你所应该知道的Dom4J创建解析器:SAXReader reader = new SAXReader();利用解析器读入xml文档:Document document = reader.read(new File("input.xml"));获取文档的根节点:Element root = document.getRootElement();接口继承结构:Node ---Branch--Document--Element----AttributeNode接口String asXML()asXMLreturns the textual XML representation of this node.将一个节点转换为字符串String getName()getNamereturns the name of this node.获取节点的名称,如果是元素则获取到元素名,如果是属性获取到属性名short getNodeType()Returns the code according to the type of node.获取节点类型,在Node接口上定义了一些静态short类型的常量用来表示各种类型Element getParent()getParentreturns the parent Element if this node supports the parent relationship or nullif it is the root element or does not support the parent relationship.获取父节点,如果是根元素调用则返回null,如果是其他元素调用则返回父元素,如果是属性调用则返回属性所依附的元素。
String getText()Returns the text of this node.返回节点文本,如果是元素则返回标签体,如果是属性则返回属性值List selectNodes(String xpathExpression)selectNodesevaluates an XPath expression and returns the result as a List of Nodeinstances or String instances depending on the XPath expression.利用xpath表达式,选择节点void setName(String name)Sets the text data of this node or this method will throw anUnsupportedOperationException if it is read-only.设置节点的名称,元素可以更改名称,属性则不可以,会抛出UnsupportedOperationException 异常void setText(String text)Sets the text data of this node or this method will throw anUnsupportedOperationException if it is read-only.设置节点内容,如果是元素则设置标签体,如果是属性则设置属性的值void write(Writer writer)writewrites this node as the default XML notation for this node.将节点写出到一个输出流中,元素、属性均支持Branch接口(实现了Node接口)void add(Element element)Adds the given Element to this branch.增加一个子节点Element addElement(QName qname)Adds a new Element node with the given QName to this branch and returns a reference tothe new node.增加一个给定名字的子节点,并且返回这个新创建的节点的引用int indexOf(Node node)Returns the index of the given node if it is a child node of this branch or -1 if the givennode is not a child node.获取给定节点在所有直接点中的位置号,如果该节点不是此分支的子节点,则返回-1boolean remove(Element element)Removes the given Element if the node is an immediate child of this branch.删除给定子元素,返回布尔值表明是否删除成功。
DOM获取节点的三种常用方法在前端开发中,DOM(文档对象模型)是非常重要的一部分。
通过DOM,我们可以操作网页上的元素节点,实现动态的页面效果。
而获取节点则是在DOM中常见的操作之一、本文将介绍DOM获取节点的三种常用方法,分别是getElementById、getElementsByClassName和getElementsByTagName。
一、getElementById:getElementById是DOM中最简单,也是最常用的获取元素的方法。
它通过指定元素的id属性来获取对应的元素节点。
id属性在HTML文档中是唯一的,所以该方法可以准确定位到对应的元素。
getElementById的语法如下:```javascriptdocument.getElementById(id)```其中,id代表要获取的元素的id属性值。
如果找到对应id的元素,则返回该元素节点;如果找不到,则返回null。
例如,以下代码将会获取文档中id为"myElement"的元素节点:```javascriptvar myElement = document.getElementById("myElement");```二、getElementsByClassName:getElementsByClassName是通过元素的类名来获取元素的方法。
它会返回一个元素节点的集合,这些元素节点的类名与指定的类名相同。
getElementsByClassName的语法如下:```javascriptdocument.getElementsByClassName(className)```其中,className是要获取元素的类名。
可以指定一个或多个类名,多个类名之间用空格分隔。
这样,返回的集合中会包含具有这些类名中至少有一个的元素节点。
例如,以下代码将会获取文档中所有类名为"myClass"的元素节点:```javascriptvar elements = document.getElementsByClassName("myClass");```需要注意的是,getElementsByClassName是在HTML5中引入的方法,旧版本的浏览器可能不支持。
Xml文件<xcfh><table name="report_info"><record_report_id><report_id>ff</report_id><edit_state>null</edit_state><report_create_time>null</report_create_time><reimburse_state>0</reimburse_state><report_date>2013-11</report_date><report_name>null</report_name><allowance></allowance><advance_payment></advance_payment><report_aim>123</report_aim><report_starttime>2013-11-25</report_starttime><report_endtime>2013-11-26</report_endtime><destination>123</destination></record_report_id><record_report_id><report_id>3</report_id><edit_state>null</edit_state><report_create_time>null</report_create_time><reimburse_state>0</reimburse_state><report_date>2013-11</report_date><report_name>null</report_name><allowance></allowance><advance_payment></advance_payment><report_aim></report_aim><report_starttime>2013-11-25</report_starttime><report_endtime>2013-11-25</report_endtime><destination>213</destination></record_report_id></table><table name="stay_info"><record_stay_id><stay_id>1</stay_id><report_id>2</report_id><stay_invoice_state>null</stay_invoice_state><stay_address></stay_address><stay_name>123</stay_name><stay_starttime>2013-11-25</stay_starttime><stay_endtime>2013-11-25</stay_endtime><stay_phonenumber></stay_phonenumber><stay_money></stay_money><stay_bill>null</stay_bill><stay_invoice_local_path>D:/w2.jpg</stay_invoice_local_path><stay_invoice_server_path>null</stay_invoice_server_path><stay_company_pay>null</stay_company_pay></record_stay_id><record_stay_id><stay_id>2</stay_id><report_id>3</report_id><stay_invoice_state>null</stay_invoice_state><stay_address></stay_address><stay_name>123</stay_name><stay_starttime>2013-11-25</stay_starttime><stay_endtime>2013-11-25</stay_endtime><stay_phonenumber></stay_phonenumber><stay_money></stay_money><stay_bill>null</stay_bill><stay_invoice_local_path>null</stay_invoice_local_path><stay_invoice_server_path>null</stay_invoice_server_path><stay_company_pay>null</stay_company_pay></record_stay_id></table><table name="other_info"></table><table name="traffic_info"><record_traffic_id><traffic_id>1</traffic_id><report_id>2</report_id><traffic_start></traffic_start><traffic_destination></traffic_destination><traffic_date>2013-11-25</traffic_date><traffic_time>21时32分</traffic_time><traffic_kind>飞机</traffic_kind><traffic_number></traffic_number><traffic_money></traffic_money><traffic_bill>null</traffic_bill><traffic_invoice_local_path>D:/w2.jpg</traffic_invoice_local_path><traffic_invoice_server_path>null</traffic_invoice_server_path><traffic_invoice_state>null</traffic_invoice_state><traffic_company_pay>null</traffic_company_pay></record_traffic_id></table></xcfh>实体类package com.test;import java.io.File;import java.util.List;import org.dom4j.Document;import org.dom4j.Node;import org.dom4j.io.SAXReader;import erManagerService;publicclass TestXML3 {publicstaticvoid main(String[] args) {//traffic_infoother_infostay_infogetImages("stay_info","w2.jpg");}/*public static void getImage(String type,StringimageName){String strxml = "D:\\test.xml";String imagePath = "D:/w2.jpg";try{File file = new File(strxml);SAXReader reader = new SAXReader();Document doc = reader.read(file);Element root = doc.getRootElement();if(imagePath.substring((stIndexOf("/") + 1)).equals(imageName)){imageName = imagePath;//String text1 = "//bookstore[@name='" + infoname + "']/*[title_id=\'" + fName + "']";String text = "//table[@name='" + type + "']/*[stay_invoice_local_path='" + imageName + "']";System.out.println(text);List<Node> node = doc.selectNodes(text);System.out.println(node.get(0).getName());System.out.println(node.get(0).selectSingleNode("stay_invoice_local_path").getText() );}}catch(Exception e){e.printStackTrace();}}*/publicstaticvoid getImages(String type,StringimageName){String strxml = "D:\\test.xml";try{File file = new File(strxml);SAXReader reader = new SAXReader();Document doc = reader.read(file);List<Node> node = doc.selectNodes("//table[@name='" + type + "']/*");for(Node n : node){//System.out.println(n.getName());if("stay_info".equals(type)){String stay_invoice_local_paths =n.selectSingleNode("stay_invoice_local_path").getText();//System.out.println(stay_invoice_local_paths);if(stay_invoice_local_paths.substring(stay_invoice_local_stIndexOf("/")+1).equals(image Name)){imageName = stay_invoice_local_paths;//System.out.println(imageName + "--------------");String text = "//table[@name='"+ type + "']/*[stay_invoice_local_path='" + imageName + "']";List<Node>node1 = doc.selectNodes(text);//System.out.println(node1.get(0).getName() + "\t--------------");System.out.println(node.get(0).selectSingleNode("stay_invoice_local_path").getText() );}}if("traffic_info".equals(type)){String traffic_invoice_local_paths =n.selectSingleNode("traffic_invoice_local_path").getText();if(traffic_invoice_local_paths.substring(traffic_invoice_local_stIndexOf("/")+1).equals(imageName)){imageName = traffic_invoice_local_paths;String text = "//table[@name='" + type +"']/*[traffic_invoice_local_path='" + imageName + "']";List<Node>node1 = doc.selectNodes(text);System.out.println(node.get(0).selectSingleNode("traffic_invoice_local_path").getText());}}if("other_info".equals(type)){String other_invoice_local_paths =n.selectSingleNode("other_invoice_local_path").getText();if(other_invoice_local_paths.substring(other_invoice_local_stIndexOf("/")+1).equals(ima geName)){imageName = other_invoice_local_paths;String text = "//table[@name='" + type +"']/*[other_invoice_local_path='" + imageName + "']";List<Node>node1 = doc.selectNodes(text);System.out.println(node.get(0).selectSingleNode("other_invoice_local_path").getText() );}}}}catch(Exception e){e.printStackTrace();}}}。