Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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

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 如何使用未排序的元素解析XML?_Java_Xml_Annotations_Jackson_Javabeans - Fatal编程技术网

Java 如何使用未排序的元素解析XML?

Java 如何使用未排序的元素解析XML?,java,xml,annotations,jackson,javabeans,Java,Xml,Annotations,Jackson,Javabeans,如何使用Jackson将包含未排序元素的XML(请参阅)解析为以下JavaBean 问题是当前的实现只能解析第一个“str”和“arr”元素,并将它们添加到DocBean下的相应集合中。但是,这些元素的所有进一步出现都将被忽略。我敢打赌,这是因为“str”和“arr”元素并没有“阻塞在一起” XML(结果元素可能包含*doc元素): 请发布一个示例输入xml文本(不是图片!)更新了问题,xml文件已被附加。我打赌这是因为“str”和“arr”元素没有“阻塞在一起”……您测试过这个理论吗?如果是这

如何使用Jackson将包含未排序元素的XML(请参阅)解析为以下JavaBean

问题是当前的实现只能解析第一个“str”和“arr”元素,并将它们添加到DocBean下的相应集合中。但是,这些元素的所有进一步出现都将被忽略。我敢打赌,这是因为“str”和“arr”元素并没有“阻塞在一起”

XML(结果元素可能包含*doc元素):


请发布一个示例输入xml文本(不是图片!)更新了问题,xml文件已被附加。我打赌这是因为“str”和“arr”元素没有“阻塞在一起”……您测试过这个理论吗?如果是这样,为什么不在处理之前对XML进行排序呢?是的,我已经测试过了。如何在没有任何解析/读取能力的情况下对元素进行排序?
<?xml version="1.0" encoding="UTF-8"?>
<response>
    <lst name="responseHeader">
        <int name="status">0</int>
        <int name="QTime">0</int>
        <lst name="params">
            <str name="fl">id,g,a,v,p,ec,timestamp,tags</str>
            <str name="sort">score desc,timestamp desc,g asc,a asc,v desc</str>
            <str name="indent">off</str>
            <str name="q">1:"e486ad917028b52265610206fb5a1e2b5914b94b"</str>
            <str name="wt">xml</str>
            <str name="version">2.2</str>
        </lst>
    </lst>
    <result name="response" numFound="1" start="0">
        <doc>
            <str name="a">xmlrpc-client</str>
            <arr name="ec">
                <str>-sources.jar</str>
                <str>-javadoc.jar</str>
                <str>.jar</str>
                <str>.pom</str>
            </arr>
            <str name="g">org.apache.xmlrpc</str>
            <str name="id">org.apache.xmlrpc:xmlrpc-client:3.1.3</str>
            <str name="p">jar</str>
            <arr name="tags">
                <str>handle</str>
                <str>apache</str>
                <str>remote</str>
                <str>extensions</str>
                <str>version</str>
                <str>simpler</str>
                <str>over</str>
                <str>compared</str>
                <str>implement</str>
                <str>procedure</str>
                <str>protocol</str>
                <str>vendor</str>
                <str>easier</str>
                <str>important</str>
                <str>introduces</str>
                <str>calls</str>
                <str>stable</str>
                <str>much</str>
                <str>that</str>
                <str>http</str>
                <str>implementation</str>
                <str>popular</str>
                <str>specification</str>
                <str>original</str>
                <str>several</str>
                <str>java</str>
                <str>uses</str>
                <str>soap</str>
            </arr>
            <long name="timestamp">1265472806000</long>
            <str name="v">3.1.3</str>
        </doc>
    </result>
</response>
@JacksonXmlRootElement(localName = "response")
public class MVNSearch {

    @JacksonXmlProperty(localName = "doc")
    @JacksonXmlElementWrapper(localName = "result")
    private List<MVNSearchDoc> docs;

    public List<MVNSearchDoc> getDocs() {
        return docs;
    }

    public void setDocs(List<MVNSearchDoc> docs) {
        this.docs = docs;
    }
}
public class MVNSearchDoc {

    @JacksonXmlProperty(localName = "str")
    @JacksonXmlElementWrapper(useWrapping = false)
    private List<MVNSearchStr> strs;

    @JacksonXmlProperty(localName = "arr")
    @JacksonXmlElementWrapper(useWrapping = false)
    private List<MVNSearchArr> arrs;

    @JacksonXmlProperty(localName = "long")
    private MVNSearchLong timestamp;

    public List<MVNSearchStr> getStrs() {
        return strs;
    }

    public void setStrs(List<MVNSearchStr> strs) {
        this.strs = strs;
    }

    public List<MVNSearchArr> getArrs() {
        return arrs;
    }

    public void setArrs(List<MVNSearchArr> arrs) {
        this.arrs = arrs;
    }

    public MVNSearchLong getTimestamp() {
        return timestamp;
    }

    public void setTimestamp(MVNSearchLong timestamp) {
        this.timestamp = timestamp;
    }   
}
public class MVNSearchStr {

    @JacksonXmlProperty(isAttribute = true)
    private String name;

    @JacksonXmlText
    private String value;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}