Skip to content

Commit ac0d3ba

Browse files
committed
xstream
xstream
1 parent 3fd04dc commit ac0d3ba

File tree

4 files changed

+171
-0
lines changed

4 files changed

+171
-0
lines changed

xstream-java-xml/.classpath

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<classpath>
3+
<classpathentry kind="src" path="src/test/java" output="target/test-classes" including="**/*.java"/>
4+
<classpathentry kind="src" path="src/main/java" including="**/*.java"/>
5+
<classpathentry kind="output" path="target/classes"/>
6+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
7+
<classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.4.4/xstream-1.4.4.jar"/>
8+
<classpathentry kind="var" path="M2_REPO/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.1.jar"/>
9+
<classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
10+
</classpath>

xstream-java-xml/pom.xml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
5+
<groupId>com.hmkcode</groupId>
6+
<artifactId>xstream-java-xml</artifactId>
7+
<version>1.0-SNAPSHOT</version>
8+
<packaging>jar</packaging>
9+
10+
<name>xstream-java-xml</name>
11+
<url>http://maven.apache.org</url>
12+
13+
<properties>
14+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
15+
</properties>
16+
17+
<dependencies>
18+
<dependency>
19+
<groupId>com.thoughtworks.xstream</groupId>
20+
<artifactId>xstream</artifactId>
21+
<version>1.4.4</version>
22+
</dependency>
23+
</dependencies>
24+
</project>
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.hmkcode;
2+
3+
4+
import com.hmkcode.vo.Article;
5+
import com.thoughtworks.xstream.XStream;
6+
7+
8+
public class App
9+
{
10+
public static void main( String[] args )
11+
{
12+
13+
XStream xs = new XStream();
14+
xs.autodetectAnnotations(true);
15+
16+
// <com.hmkcode.vo.Article> --> <article>
17+
//xs.alias("article", Article.class);
18+
// <url> --> <address>
19+
// xs.aliasField("address", Article.class, "url");
20+
21+
// OBJECT --> XML
22+
String xml = xs.toXML(createArticle());
23+
24+
System.out.println("OBJECT --> XML");
25+
System.out.println(xml);
26+
27+
System.out.println("\n--------------------------------\n");
28+
29+
// OBJECT --> XML
30+
Article article = (Article) xs.fromXML(xml);
31+
32+
System.out.println("XML --> OBJECT");
33+
System.out.println(article);
34+
}
35+
36+
private static Article createArticle(){
37+
38+
Article article = new Article();
39+
40+
article.setTitle("XStream - Java Object to XML & XML to Object Mapping");
41+
article.setUrl("http://hmkcode.com/xstream-java-object-xml");
42+
article.setPublished(true);
43+
44+
article.addCategory("Java");
45+
article.addTag("Java");
46+
article.addTag("Xstream");
47+
article.addTag("XML");
48+
article.addTag("Marshalling");
49+
article.addTag("Unmarshalling");
50+
51+
return article;
52+
}
53+
}
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package com.hmkcode.vo;
2+
3+
import java.util.LinkedList;
4+
import java.util.List;
5+
6+
import com.thoughtworks.xstream.annotations.XStreamAlias;
7+
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
8+
import com.thoughtworks.xstream.annotations.XStreamConverter;
9+
import com.thoughtworks.xstream.annotations.XStreamImplicit;
10+
import com.thoughtworks.xstream.annotations.XStreamOmitField;
11+
import com.thoughtworks.xstream.converters.basic.BooleanConverter;
12+
13+
@XStreamAlias("article")
14+
public class Article {
15+
16+
@XStreamAsAttribute
17+
private String title;
18+
19+
@XStreamAlias("address")
20+
private String url;
21+
22+
@XStreamConverter(value=BooleanConverter.class, booleans={false}, strings={"yes", "no"})
23+
private boolean published;
24+
25+
@XStreamOmitField
26+
private List<String> categories;
27+
28+
@XStreamImplicit(itemFieldName="tag")
29+
private List<String> tags;
30+
31+
public String getTitle() {
32+
return title;
33+
}
34+
public void setTitle(String title) {
35+
this.title = title;
36+
}
37+
public String getUrl() {
38+
return url;
39+
}
40+
public void setUrl(String url) {
41+
this.url = url;
42+
}
43+
44+
public boolean isPublished() {
45+
return published;
46+
}
47+
public void setPublished(boolean published) {
48+
this.published = published;
49+
}
50+
public List<String> getCategories() {
51+
return categories;
52+
}
53+
public void setCategories(List<String> categories) {
54+
this.categories = categories;
55+
}
56+
public List<String> getTags() {
57+
return tags;
58+
}
59+
public void setTags(List<String> tags) {
60+
this.tags = tags;
61+
}
62+
63+
public void addCategory(String category){
64+
if(this.categories == null)
65+
this.categories = new LinkedList<String>();
66+
this.categories.add(category);
67+
}
68+
public void addTag(String tag){
69+
if(this.tags == null)
70+
this.tags = new LinkedList<String>();
71+
72+
this.tags.add(tag);
73+
}
74+
@Override
75+
public String toString() {
76+
return "Article [title=" + title + ",\nurl=" + url + ",\npublished="
77+
+ published + ",\ncategories=" + categories + ",\ntags=" + tags
78+
+ "]";
79+
}
80+
81+
82+
83+
84+
}

0 commit comments

Comments
 (0)