Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDOM getChildren()返回空列表_Java_Xml_Jdom - Fatal编程技术网

Java JDOM getChildren()返回空列表

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:

例如:

<?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 这将返回一个列表,其中包含直接嵌套在此元素中一个级别的所有子元素,这些子元素具有给定的本地名称,并且属于给定的命名空间,作为元素对象返回


第一个节点找不到您的节点如果它属于名称空间,您应该使用第二个。

您说您从未获得预期的输出。你得到了什么?你可以检查一下,你说你从来没有得到预期的输出。你得到了什么?你可以检查一下,