po.xml: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <ns1:LST_SBRResponse xmlns:ns1="http://www.xxx.com/a/"> <ns1:Result> <ns1:ResultCode>0</ns1:ResultCode> <ns1:ResultDesc>Operation succeeded.</ns1:ResultDesc> <ns1:ResultData> <ns1:Table1> <ns1:Item> <ns1:GRPIDX>65535</ns1:GRPIDX> <ns1:SCADDRIDX>65535</ns1:SCADDRIDX> <ns1:CDNOCB>0</ns1:CDNOCB> <ns1:PBTSBR> <ns1:PBXID /> <ns1:ISPILOT>0</ns1:ISPILOT> <ns1:ISSHARESRV>0</ns1:ISSHARESRV> </ns1:PBTSBR> <ns1:KVALUE>255</ns1:KVALUE> <ns1:INPFIDX>65535</ns1:INPFIDX> </ns1:Item> </ns1:Table1> </ns1:ResultData> </ns1:Result> </ns1:LST_SBRResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 我想取出<ns1:Item>中所有元素 SAXReader saxReader = new SAXReader(); Document document = saxReader.read(test.class.getResourceAsStream("po.xml")); DefaultXPath xpath = new DefaultXPath("//ns1:Item"); xpath.setNamespaceURIs(Collections.singletonMap("ns1","http://www.xxx.com/a/")); List list = xpath.selectNodes(document); Iterator iterator = list.iterator(); int i = 1; while (iterator.hasNext()) { Element node = (Element) iterator.next(); System.out.println(i++ + node.getName()); } 可是出来的只有Item |
|
import java.util.Collections;
import java.util.Iterator; import java.util.List; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.dom4j.xpath.DefaultXPath; 引入的包 |
|
100分 |
你这个没有问题。只是得到的只是<ns1:Item>结点,得到它下面的,再往下写一步就得到了。
while (iterator.hasNext()) {
Element node = (Element) iterator.next();
System.out.println(i++ + node.getName());
List<Element> eleList = node.elements();//即是Item下的所有子结点
}
|
while (iterator.hasNext()) {
Element node = (Element) iterator.next();
System.out.println(i++ + node.getName());
//即是Item下的所有子结点
List<Element> eleList = node.elements();
}
之后,到了<ns1:PBTSBR>结点,再用elements()方法得到它下面的所有子结点即可。 |
|
还有个问题 不知道您能否帮我解答:
下面的子节点取出来后 会有org.dom4j.tree.DefaultText org.dom4j.tree.DefaultElement 2种DefaultElement是我想要的元素 DefaultText 是里面的空格 我不想用反射判断类型 有没trim之类的好方法直接去掉这些 |
|
帮我的去看下是什么原因啊。。。。。
http://topic.csdn.net/u/20120712/09/7fb59f4c-5bf0-4ded-8106-f40daba71be4.html?seed=1506720161&r=79101440#r_79101440 |
|
这个原因是由于我取出LIST的方法是.content() |
|
http://download.csdn.net/detail/brave2002honest/8546553
|