当前位置: 首页 > 知识库问答 >
问题:

使用XStream读取XML

都阳辉
2023-03-14

如何编写java类来读取此XMl文件

<Response> 
<Models Make="SAMSUNG"> 
        <ModelNo>AB0-12343</ModelNo> 
        <ModelNo>BB1232222</ModelNo> 
    </Models>
     <Models Make="PANASONIC"> 
        <ModelNo>AB0-12343</ModelNo>
        <ModelNo>BB1232222</ModelNo> 
    </Models> 
</Response>

我试过这样

@XStreamAlias("Response")
public class SL_LookupModelsResponse  {
    private ArrayList<Models> Models;

    public ArrayList<Models> getModels() {
        return Models;
    }

    public void setModels(ArrayList<Models> models) {
        Models = models;
    }

    @Override
    public String toString() {
        return "SL_LookupModelsResponse [Models=" + Models + "]";
    }

    @XStreamAlias("Models")
    class Models{
        private ArrayList<String> ModelNo;

        @XStreamAsAttribute  
        private String Make;  

        public ArrayList<String> getModelNos() {
            return ModelNo;
        }

        public void setModelNos(ArrayList<String> ModelNo) {
            this.ModelNo = ModelNo;
        }

        public String getMake() {  
            return Make;  
        }  

        public void setMake(String make) {  
            this.Make = make;  
        }  

        @Override
        public String toString() {
            return "Models [ModelNo=" + ModelNo + "Make="+ Make +"]";
        }

    }
  }

但我得到了这个错误

Exception in thread "main" com.thoughtworks.xstream.converters.ConversionException: ModelNo : ModelNo
---- Debugging information ----
message             : ModelNo
cause-exception     : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message       : ModelNo
class               : java.util.ArrayList
required-type       : java.util.ArrayList
converter-type      : com.thoughtworks.xstream.converters.collections.CollectionConverter
path                : /Response/Models/ModelNo
class[1]            : com.samples.SL_LookupModelsResponse
converter-type[1]   : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
version             : null

请帮我解决这个问题。。。

非常感谢。

共有1个答案

周阳波
2023-03-14

我在这里看到了一个读取复杂XML数据的示例。。。这对我解决这个问题帮助很大。希望这能帮助像我这样的人。。

 类似资料:
  • XStream是一个Java对象和XML相互转换的工具,很好很强大。提供了所有的基础类型、数组、集合等类型直接转换的支持。因此XML常用于数据交换、对象序列化(这种序列化和Java对象的序列化技术有着本质的区别)。 Xstream是一种OXMapping 技术,是用来处理XML文件序列化的框架,在将javaBean序列化,或将XML文件反序列化的时候,不需要其它辅助类和映射文件,使得XML序列化不

  • 想知道如何使用Xstream API修复Xml外部实体(XXE)漏洞。 就像我们能做的一样 使用DocumentBuilderFactory。更多详细信息-https://www.owasp.org/index.php/XML_External_Entity_(XXE)\u预防\u备忘单 我的代码是这样的-

  • 问题内容: 我有类似的xml 除了在父对象内部创建消息对象外,我还需要将消息表示为String。因此,当我执行parent.message时,输出将代替消息对象。 问题答案: idia将通过处理来建立消息的xml 。如果不幸地调用失败,则不会返回此元素的全部内容。 模型 转换器 这个测试 打印出来 但这不是所有相同的内容!例如,它会忽略空格,它们会映射到空白,而我并未测试XML实体,例如etc。

  • 我正在通过Spark使用以下命令读取csv文件。 我需要创建一个Spark DataFrame。 我使用以下方法将此rdd转换为spark df: 但是在将rdd转换为df时,我需要指定df的模式。我试着这样做:(我只有两列文件和消息) 然而,我得到了一个错误:java。lang.IllegalStateException:输入行没有架构所需的预期值数。需要2个字段,但提供1个值。 我还尝试使用以

  • 我正在尝试使用Boost来解析JSON文件。这是 JSON 文件 和一个MWE 问题:我目前知道如何读取最外层的变量<code>a。然而,我在阅读其他级别(如<code>b_a、b_b_a和b_d_a</code>等)时遇到了困难。如何使用Boost实现这一点?我不一定要寻找涉及循环的解决方案,只是想弄清楚如何“提取”内部变量。 如果其他库是最佳的,我愿意使用它们。但是到目前为止,Boost在我看

  • 我为基本上是Bèzier路径的创建了一些。为此,我转换了类型为和的路径元素,为此我还有转换器: 我有一个测试代码: 混搭路径时创建的文件如下所示,这是我基本上想要的: 但是,在解组XML时,我遇到了这个异常: PathConverter中的第52行指向该行(在for循环中的第一次调用): 我的猜测是,这个问题与方法上的和方法有关,这样读者仍然处于它期望的结束节点的状态。对于其他两个转换器,我也有测