SimpleXML 很容易解决问题.我做错了什么?

Very easy to solve issue with SimpleXML. What i#39;m doing wrong?(SimpleXML 很容易解决问题.我做错了什么?)
本文介绍了SimpleXML 很容易解决问题.我做错了什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我正在使用 Java 和 SimpleXML

I'm working with Java and SimpleXML

我需要用 SimpleXML 解析这个 XML 文件:

I need to parse this XML file with SimpleXML:

<magazine title="N˙mero 1" id="1">
    <description>yutyutyu</description>
    <miniature>http://web.com/scripts/getImage.php?idMagazine=1&resource=miniature.jpg</miniature>
    <summary>2</summary>
    <pages>
        <page src="http://web.com/scripts/getImage.php?idMagazine=1&resource=page_001.jpg" id="1" thumbnail="http://web.com/scripts/getImage.php?idMagazine=1&resource=thumbnail_001.jpg">
            <areas>
                <area id="1">
                    <top>188</top>
                    <left>204</left>
                    <width>399</width>
                    <height>319</height>
                    <action type="openBrowser">http://www.web.com</action>
                </area>
                <area id="2">
                    <top>188</top>
                    <left>204</left>
                    <width>399</width>
                    <height>319</height>
                    <action type="openBrowser">http://www.web.com</action>
                </area>
            </areas>
        </page>
        <page src="http://web.com/scripts/getImage.php?idMagazine=1&resource=page_002.jpg" id="2" thumbnail="web.com/scripts/getImage.php?idMagazine=1&resource=thumbnail_002.jpg"/>
        <page src="http://web.com/scripts/getImage.php?idMagazine=1&resource=page_003.jpg" id="3" thumbnail="web.com/scripts/getImage.php?idMagazine=1&resource=thumbnail_003.jpg"/>
    </pages>    
</magazine>

我遇到了这个异常:

03-22 16:02:35.072: WARN/System.err(1931): org.simpleframework.xml.core.ValueRequiredException: 无法满足 @org.simpleframework.xml.ElementList(data=false, empty=true, entry=, inline=false, name=, required=true, type=void) on field 'areas' public java.util.ArrayList com.Magazine.Page.areas for class com.Magazine.Page 在第 1 行

03-22 16:02:35.072: WARN/System.err(1931): org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.ElementList(data=false, empty=true, entry=, inline=false, name=, required=true, type=void) on field 'areas' public java.util.ArrayList com.Magazine.Page.areas for class com.Magazine.Page at line 1

杂志有一个页面数组,每个页面有一个区域数组,每个区域都有一个动作类,里面有更多的内容.问题肯定出在area数组上,所以在Page类中.

Magazine has an array of pages, and each page has an array of areas, and each area has a action class, which has some more content. The problem must be on areas array, so it is in Page class.

@Root (name="magazine")
public class FullMagazine {
    @Attribute
    String title;
    @Attribute
    String id;
    @Element
    String description;
    @Element
    String miniature;
    @Element
    int summary;
    @ElementList
    public ArrayList<Page> pages;
    
    public String getTitle() {
        return title;
    }
    public String getId() {
        return id;
    }
    public String getDescription() {
        return description;
    }
    public Bitmap getMiniature() {
        return Util.getRemoteBitmap(miniature);
    }   
    
    public static FullMagazine Load(String xml){ 
        Serializer serializer = new Persister();
        try{
            return serializer.read(FullMagazine.class, xml);
        }catch (Exception e) {e.printStackTrace();}
        return null; //si llega aqu es que ha fallado.
    }
}


@Root
public class Page {
    @Attribute
    String src;
    @Attribute
    String id;
    @Attribute
    String thumbnail;
    @ElementList
    public ArrayList<Area> areas;
}


@Root
public class Area {
    @Attribute
    String id;  
    @Element
    int top;
    @Element
    int left;
    @Element
    int width;
    @Element
    int height;
    @Element
    Action action;
}


@Root
public class Action {   
    @Attribute
    String type;    
    
    String action;
}

推荐答案

必须在area的ArrayList上加上required=false,XML的部分Pages没有Areas

You must put required=false on the ArrayList of areas, some of the Pages of the XML doesn't have Areas

    @Root
public class Page {
    @Attribute
    String src;
    @Attribute
    String id;
    @Attribute
    String thumbnail;
    @ElementList (required=false)
    public ArrayList<Area> areas;
}

这篇关于SimpleXML 很容易解决问题.我做错了什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Reliable implementation of PBKDF2-HMAC-SHA256 for JAVA(PBKDF2-HMAC-SHA256 for JAVA 的可靠实现)
Correct way to sign and verify signature using bouncycastle(使用 bouncycastle 签名和验证签名的正确方法)
Creating RSA Public Key From String(从字符串创建 RSA 公钥)
Why java.security.NoSuchProviderException No such provider: BC?(为什么 java.security.NoSuchProviderException 没有这样的提供者:BC?)
Generating X509 Certificate using Bouncy Castle Java(使用 Bouncy Castle Java 生成 X509 证书)
How can I get a PublicKey object from EC public key bytes?(如何从 EC 公钥字节中获取 PublicKey 对象?)