Java JDOM getChildren()返回空列表
这是我的xml: 例如:Java JDOM getChildren()返回空列表,java,xml,jdom,Java,Xml,Jdom,这是我的xml: 例如: <?xml version="1.0" encoding="UTF_8" standalone="yes"?> <StoreMessage xmlns="http://www.xxx.com/feed"> <billingDetail> <billingDetailId>987</billingDetailId> <contextId>0<
<?xml version="1.0" encoding="UTF_8" standalone="yes"?>
<StoreMessage xmlns="http://www.xxx.com/feed">
<billingDetail>
<billingDetailId>987</billingDetailId>
<contextId>0</contextId>
<userId>
<pan>F0F8DJH348DJ</pan>
<contractSerialNumber>46446</contractSerialNumber>
</userId>
<declaredVehicleClass>A</declaredVehicleClass>
</billingDetail>
<billingDetail>
<billingDetailId>543</billingDetailId>
<contextId>0</contextId>
<userId>
<pan>F0F854534534348DJ</pan>
<contractSerialNumber>4666546446</contractSerialNumber>
</userId>
<declaredVehicleClass>C</declaredVehicleClass>
</billingDetail>
</StoreMessage>
使用JDOM解析器,我希望从中获取所有xml节点
我的代码:
SAXBuilder builder = new SAXBuilder();
try {
Reader in = new StringReader(xmlAsString);
Document document = (Document)builder.build(in);
Element rootNode = document.getRootElement();
List<?> list = rootNode.getChildren("billingDetail");
XMLOutputter outp = new XMLOutputter();
outp.setFormat(Format.getCompactFormat());
for (int i = 0; i < list.size(); i++) {
Element node = (Element)list.get(i);
StringWriter sw = new StringWriter();
outp.output(node.getContent(), sw);
StringBuffer sb = sw.getBuffer();
String text = sb.toString();
xmlRecords.add(sb.toString());
}
} catch (IOException io) {
io.printStackTrace();
} catch (JDOMException jdomex) {
jdomex.printStackTrace();
}
但我从未将xml节点作为字符串输出:
<billingDetail>
<billingDetailId>987</billingDetailId>
<contextId>0</contextId>
<userId>
<pan>F0F8DJH348DJ</pan>
<contractSerialNumber>46446</contractSerialNumber>
</userId>
<declaredVehicleClass>A</declaredVehicleClass>
</billingDetail>
我做错了什么?如何使用JDOM解析器获得此输出
编辑
为什么XML以
反而喜欢
那有效吗?这怎么可能呢?问题是getChildren方法有两个版本: java.util.List getChildrenjava.lang.String名称 这将返回一个列表,其中的所有子元素直接嵌套在该元素的一层深处,具有给定的本地名称,不属于任何名称空间,作为元素对象返回 及 java.util.List getChildrenjava.lang.String名称,命名空间ns 这将返回一个列表,其中包含直接嵌套在此元素中一个级别的所有子元素,这些子元素具有给定的本地名称,并且属于给定的命名空间,作为元素对象返回
第一个方法找不到您的节点。如果它属于命名空间,则应使用第二个方法。问题是getChildren方法有两个版本: java.util.List getChildrenjava.lang.String名称 这将返回一个列表,其中的所有子元素直接嵌套在该元素的一层深处,具有给定的本地名称,不属于任何名称空间,作为元素对象返回 及 java.util.List getChildrenjava.lang.String名称,命名空间ns 这将返回一个列表,其中包含直接嵌套在此元素中一个级别的所有子元素,这些子元素具有给定的本地名称,并且属于给定的命名空间,作为元素对象返回
第一个节点找不到您的节点如果它属于名称空间,您应该使用第二个。您说您从未获得预期的输出。你得到了什么?你可以检查一下,你说你从来没有得到预期的输出。你得到了什么?你可以检查一下,