package com.hym.xStream; import java.util.List; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamImplicit; @XStreamAlias("c") public class BKEuropOddsDTO { @XStreamImplicit(itemFieldName = "h") private List<Match> matchs; public List<Match> getMatchs() { return matchs; } public void setMatchs(List<Match> matchs) { this.matchs = matchs; } @XStreamAlias("h") public static class Match { @XStreamAlias("id") private String id; @XStreamAlias("odds") private Odds odds; @XStreamAlias("time") private String time; @XStreamAlias("league") private String league; @XStreamAlias("home") private String home; @XStreamAlias("away") private String away; @XStreamAlias("odds") public static class Odds { @XStreamImplicit(itemFieldName = "o") private List<String> o; public List<String> getO() { return o; } public void setO(List<String> o) { this.o = o; } } public String getTime() { return time; } public void setTime(String time) { this.time = time; } public String getLeague() { return league; } public void setLeague(String league) { this.league = league; } public String getHome() { return home; } public void setHome(String home) { this.home = home; } public String getAway() { return away; } public void setAway(String away) { this.away = away; } public String getId() { return id; } public void setId(String id) { this.id = id; } public Odds getOdds() { return odds; } public void setOdds(Odds odds) { this.odds = odds; } } }
package com.hym.xStream; import java.util.List; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.XppDomDriver; public class XStreamTest { private static final String xml = "<?xml version=\"1.0\" encoding=\"UTF8\"?><c><h><id>155991</id><time>2013/4/27 8:00:00</time><league>NBA,美國男子職業籃球聯賽,美国男子职业篮球联赛</league><home>Boston Celtics,波士頓塞爾特人,波士顿凯尔特人</home><away>New York Knicks,紐約人,纽约尼克斯</away><odds><o>379,JustBet,1.69,2.25,1.68,2.28,2013/4/26 14:07:38</o><o>431,Sporttery Official,1.65,1.84,1.68,1.81,2013/4/26 14:07:37</o></odds></h><h><id>155976</id><time>2013/4/27 10:30:00</time><league>NBA,美國男子職業籃球聯賽,美国男子职业篮球联赛</league><home>Los Angeles Lakers,洛杉磯湖人,洛杉矶湖人</home><away>San Antonio Spurs,聖安東尼奧馬刺,圣安东尼奥马刺</away><odds><o>278,Sportbet,2.85,1.5,2.88,1.49,2013/4/26 14:07:49</o><o>11,5Dimes,2.85,1.5,2.88,1.49,2013/4/26 14:07:49</o><o>334,Island Casino,2.85,1.5,2.88,1.49,2013/4/26 14:07:49</o></odds></h><h><id>155972</id><time>2013/4/27 10:30:00</time><league>NBA,美國男子職業籃球聯賽,美国男子职业篮球联赛</league><home>Golden State Warriors,金州勇士,金州勇士</home><away>Denver Nuggets,丹佛金塊,丹佛掘金</away><odds><o>334,Island Casino,1.89,2.02,1.93,1.98,2013/4/26 14:05:55</o><o>278,Sportbet,1.89,2.02,1.93,1.98,2013/4/26 14:05:55</o><o>11,5Dimes,1.89,2.02,1.93,1.98,2013/4/26 14:05:54</o></odds></h></c>"; public static void main(String[] args) { XStreamTest test = new XStreamTest(); test.parseXML(xml); } public void parseXML(String content) { if (content == null || content.length() == 0) { return; } XStream xs = new XStream(new XppDomDriver()); // xs.autodetectAnnotations(true); //xs.alias("h", List.class); xs.processAnnotations(BKEuropOddsDTO.class); BKEuropOddsDTO bkEuropOddsDTO = (BKEuropOddsDTO) xs.fromXML(content); List<BKEuropOddsDTO.Match> list = bkEuropOddsDTO.getMatchs(); // List<String> list = (List<String>) xs.fromXML(content); if (list == null || list.size() <= 0) { return; } for (int i = 0; i < list.size(); i++) { BKEuropOddsDTO.Match h = list.get(i); System.out.println("h.MatchId = " + h.getId()); BKEuropOddsDTO.Match.Odds odd = h.getOdds(); List<String> odds = odd.getO(); for (String o : odds) { System.out.println("o = " + o); } } } }
没有别的窍门,根据xml的层次来定义实体类,就不会出错。
相关推荐
利用xstream技术生成和解析XML文件的例子。同时里面包含xstream1.3.1.chm帮助文档,jar包(xstream-1.3.1.jar、jettison-1.0.1.jar、xpp3_min-1.1.4c.jar、junit.4.8.1.jar),还有sstream1.3.1源码。
**XStream 深度解析与实践指南** XStream 是一个用 Java 编写的库,它将 Java 对象转换为 XML,反之亦然,提供...通过深入研究 XStream 的文档和代码实例,开发者能够更好地利用这一工具来优化项目中的数据处理流程。
首先,我们需要创建一个XStream实例,然后使用它来序列化或反序列化对象。 ```java import com.thoughtworks.xstream.XStream; public class XStreamExample { public static void main(String[] args) { // ...
2. **基本序列化**: 创建一个Java对象,然后使用XStream实例将其转换为XML字符串: ```java import com.thoughtworks.xstream.XStream; public class User { private String name; private int age; // ...
它的基本用法包括创建一个XStream实例,然后使用`toXML()`方法将对象转换为XML字符串,以及使用`fromXML()`方法将XML字符串转换回相应的Java对象。这个过程使得数据持久化、网络传输或者跨系统交互变得更加便捷。 ...
要将Java bean转换为XML,你需要创建一个XStream实例并使用它来转换对象。以下是一个简单的示例: ```java import com.thoughtworks.xstream.XStream; public class User { private String name; private int ...
创建xStream实例并进行基本配置,如设置日期格式、忽略字段等: ```java XStream xstream = new XStream(); xstream.alias("employee", Employee.class); // 给Employee类设置别名 ``` 3. **序列化Java对象为...
例如,如果有一个 `Date` 类型的属性,我们可以创建一个 `DateConverter` 并注册到 XStream 实例中: ```java xstream.registerConverter(new DateConverter()); ``` 五、域级别的忽略与转换 XStream 提供了注解...
1. **创建XStream实例** 创建 XStream 实例是使用 XStream 的第一步。可以通过指定不同的驱动器来初始化 XStream 对象,例如使用 DOM 驱动器: ```java XStream xstream = new XStream(new DomDriver()); ``` ...
1. **初始化XStream实例**:`XStream xstream = new XStream();` 这一步创建了一个默认配置的XStream实例。XStream会自动处理大部分常见的Java类,包括标准库中的类和一些常用框架的类。 2. **自定义转换规则**:...
2. 创建 XStream 实例:`XStream xstream = new XStream();` 3. 配置 XStream:根据需求设置命名策略、类型转换器等。 4. 序列化对象:`String xml = xstream.toXML(yourObject);` 5. 反序列化 XML:`YourObject ...
- 创建XStream实例。 - 使用`toXML()`方法将实体对象转换为XML字符串。 - 将XML字符串写入文件。 4. **XML文件读取**: - 创建XStream实例。 - 使用`fromXML()`方法将XML字符串转换为实体对象。 - 对实体对象...
它们可能会创建一些包含Date对象的Java类,然后使用XStream实例进行序列化和反序列化操作,确保日期的转换符合预期。测试代码可能如下所示: ```java import com.thoughtworks.xstream.XStream; import ...
2. **创建XStream实例**:创建一个XStream实例,通常你会初始化它并设置一些配置,比如类名别名。 ```java XStream xstream = new XStream(); xstream.alias("myBean", MyBean.class); ``` 3. **转换Bean对象**...
首先创建一个Java对象,然后使用XStream实例的`toXML()`方法将其转换为XML字符串。 ```java import com.thoughtworks.xstream.XStream; public class User { private String name; private int age; // 构造器...
接口并注册到XStream实例中,可以控制对象到XML的转换过程。 五、安全与配置 由于XStream可以直接将任何Java对象序列化,可能存在安全风险。为了防止恶意对象注入,可以设置安全模式,如禁用自动类型探测和使用白...
// 创建一个 XStream 实例 XStream xstream = new XStream(); // 定义要序列化的 Java 对象 Person person = new Person("John", "Doe", 30); // 将 Java 对象转换为 XML 字符串 String xml = xstream.toXML...
XStream 实例通常通过 `XStream()` 构造函数创建。为了提高安全性,你可以使用 `XStream alienInstance()` 创建不受信任输入的实例,以防止安全漏洞。还可以通过 `alias()` 方法设置别名,简化 XML 结构。 ```java ...