DOM4J Select Child 个节点
DOM4J Select Child Nodes
我有标签本,然后我读出2个节点
CCUSTBLS_KundennummerBLS
CCOMP_MandantFIBU
在此之后,我有了节点 "Lieferadresse"。现在我希望我有一个遍历节点 "Lieferadresse" 的循环。我的问题是,我经常看到所有孩子都形成了 "Lieferadresse",而不仅仅是第一个 "Lieferadresse" 的孩子。我认为我的 Xpath 是错误的。
<?xml version="1.0" encoding="utf-8"?>
<eDoc>
<book>
<CCUSTBLS_KundennummerBLS>1143</CCUSTBLS_KundennummerBLS>
<CCOMP_MandantFIBU>1</CCOMP_MandantFIBU>
<Lieferadresse>
<TSHIPBLS_NrLieferadresse>1</TSHIPBLS_NrLieferadresse>
<TCUSTBLS_Kunde>1143</TCUSTBLS_Kunde>
</Lieferadresse>
<Lieferadresse>
<TSHIPBLS_NrLieferadresse>2</TSHIPBLS_NrLieferadresse>
<TCUSTBLS_Kunde>1143</TCUSTBLS_Kunde>
</Lieferadresse>
<Lieferadresse>
<TSHIPBLS_NrLieferadresse>3</TSHIPBLS_NrLieferadresse>
<TCUSTBLS_Kunde>1143</TCUSTBLS_Kunde>
</Lieferadresse>
</book>
</eDoc>
Java Class
List<Node> nodes = document.selectNodes("/eDoc/book/child::*");
List<Node> list = nodes;
for (Node node : list) {
String nodeName = node.getName();
if("Lieferadresse".equals(nodeName)){
List<Node> nodesDelivery = document.selectNodes("//"+nodeName+"/child::*");
System.out.println("------------------------------------------------------");
for(Node nodeDelivery : nodesDelivery){
System.out.println(nodeDelivery.getName() + " " +nodeDelivery.getText());
}
}else{
System.out.println(nodeName + " " +node.getText());
}
}
结果:
Root element :eDoc
CCUSTBLS_KundennummerBLS 1143
CCOMP_MandantFIBU 1
------------------------------------------------------
TSHIPBLS_NrLieferadresse 1
TCUSTBLS_Kunde 1143
TSHIPBLS_NrLieferadresse 2
TCUSTBLS_Kunde 1143
TSHIPBLS_NrLieferadresse 3
TCUSTBLS_Kunde 1143
------------------------------------------------------
------------------------------------------------------
TSHIPBLS_NrLieferadresse 1
TCUSTBLS_Kunde 1143
TSHIPBLS_NrLieferadresse 2
TCUSTBLS_Kunde 1143
TSHIPBLS_NrLieferadresse 3
TCUSTBLS_Kunde 1143
------------------------------------------------------
------------------------------------------------------
TSHIPBLS_NrLieferadresse 1
TCUSTBLS_Kunde 1143
TSHIPBLS_NrLieferadresse 2
TCUSTBLS_Kunde 1143
TSHIPBLS_NrLieferadresse 3
TCUSTBLS_Kunde 1143
------------------------------------------------------
使用相对路径 *
并在 node
变量上调用 selectNodes
方法,例如node.selectNodes("*")
(http://dom4j.sourceforge.net/dom4j-1.6.1/apidocs/org/dom4j/Node.html#selectNodes(java.lang.String)). If you know you are interested in child elements you can as well access node.elements()
(http://dom4j.sourceforge.net/dom4j-1.6.1/apidocs/org/dom4j/Element.html#elements()) 如果你首先转换到 Element
节点..
我有标签本,然后我读出2个节点
CCUSTBLS_KundennummerBLS
CCOMP_MandantFIBU
在此之后,我有了节点 "Lieferadresse"。现在我希望我有一个遍历节点 "Lieferadresse" 的循环。我的问题是,我经常看到所有孩子都形成了 "Lieferadresse",而不仅仅是第一个 "Lieferadresse" 的孩子。我认为我的 Xpath 是错误的。
<?xml version="1.0" encoding="utf-8"?>
<eDoc>
<book>
<CCUSTBLS_KundennummerBLS>1143</CCUSTBLS_KundennummerBLS>
<CCOMP_MandantFIBU>1</CCOMP_MandantFIBU>
<Lieferadresse>
<TSHIPBLS_NrLieferadresse>1</TSHIPBLS_NrLieferadresse>
<TCUSTBLS_Kunde>1143</TCUSTBLS_Kunde>
</Lieferadresse>
<Lieferadresse>
<TSHIPBLS_NrLieferadresse>2</TSHIPBLS_NrLieferadresse>
<TCUSTBLS_Kunde>1143</TCUSTBLS_Kunde>
</Lieferadresse>
<Lieferadresse>
<TSHIPBLS_NrLieferadresse>3</TSHIPBLS_NrLieferadresse>
<TCUSTBLS_Kunde>1143</TCUSTBLS_Kunde>
</Lieferadresse>
</book>
</eDoc>
Java Class
List<Node> nodes = document.selectNodes("/eDoc/book/child::*");
List<Node> list = nodes;
for (Node node : list) {
String nodeName = node.getName();
if("Lieferadresse".equals(nodeName)){
List<Node> nodesDelivery = document.selectNodes("//"+nodeName+"/child::*");
System.out.println("------------------------------------------------------");
for(Node nodeDelivery : nodesDelivery){
System.out.println(nodeDelivery.getName() + " " +nodeDelivery.getText());
}
}else{
System.out.println(nodeName + " " +node.getText());
}
}
结果:
Root element :eDoc
CCUSTBLS_KundennummerBLS 1143
CCOMP_MandantFIBU 1
------------------------------------------------------
TSHIPBLS_NrLieferadresse 1
TCUSTBLS_Kunde 1143
TSHIPBLS_NrLieferadresse 2
TCUSTBLS_Kunde 1143
TSHIPBLS_NrLieferadresse 3
TCUSTBLS_Kunde 1143
------------------------------------------------------
------------------------------------------------------
TSHIPBLS_NrLieferadresse 1
TCUSTBLS_Kunde 1143
TSHIPBLS_NrLieferadresse 2
TCUSTBLS_Kunde 1143
TSHIPBLS_NrLieferadresse 3
TCUSTBLS_Kunde 1143
------------------------------------------------------
------------------------------------------------------
TSHIPBLS_NrLieferadresse 1
TCUSTBLS_Kunde 1143
TSHIPBLS_NrLieferadresse 2
TCUSTBLS_Kunde 1143
TSHIPBLS_NrLieferadresse 3
TCUSTBLS_Kunde 1143
------------------------------------------------------
使用相对路径 *
并在 node
变量上调用 selectNodes
方法,例如node.selectNodes("*")
(http://dom4j.sourceforge.net/dom4j-1.6.1/apidocs/org/dom4j/Node.html#selectNodes(java.lang.String)). If you know you are interested in child elements you can as well access node.elements()
(http://dom4j.sourceforge.net/dom4j-1.6.1/apidocs/org/dom4j/Element.html#elements()) 如果你首先转换到 Element
节点..