XML文件(TPA_library.xml)
<pis_project baseline_description="TPA Library List" baseline_version="0102" creation_date="Fri Sep 01 17:08:26 2022"
name="JRL J151 CCT">
<pre_recorded_message>
<tpa_message index="1" type="TPA Library" database_id="PreDefID_xx" description="" targets="" name="" ddu_id=""
mode="single" concurrent="none">
<multilingual_string name="title">
<ml_entry lang="en_SG" val="Detrainment"/>
<ml_entry lang="zh_SG" val=""/>
<ml_entry lang="ms_MY" val=""/>
<ml_entry lang="ta_IN" val=""/>
</multilingual_string>
<multilingual_string name="message">
<ml_entry lang="en_SG"
val="Due to a train fault, this train service ends here. Please alight and board the next train. We apologise for the inconvenience."/>
<ml_entry lang="zh_SG" val=""/>
<ml_entry lang="ms_MY" val=""/>
<ml_entry lang="ta_IN" val=""/>
</multilingual_string>
</tpa_message>
</pre_recorded_message>
</pis_project>
引入依赖
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.20</version>
</dependency>
<dependency>
<groupId>xmlpull</groupId>
<artifactId>xmlpull</artifactId>
<version>1.1.3.1</version>
</dependency>
<dependency>
<groupId>xpp3</groupId>
<artifactId>xpp3_min</artifactId>
<version>1.1.4c</version>
</dependency>
创建实体类
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
@XStreamAlias("pis_project")
public class PisProject {
@XStreamAlias("baseline_description")
@XStreamAsAttribute
private String filed1;
@XStreamAlias("baseline_version")
@XStreamAsAttribute
private String filed2;
@XStreamAlias("creation_date")
@XStreamAsAttribute
private String filed3;
@XStreamAlias("name")
@XStreamAsAttribute
private String filed4;
@XStreamAlias("pre_recorded_message")
private List<PreRecordedMessage> preRecordedMessageList = new ArrayList<>();
}
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
@XStreamAlias("tpa_message")
public class PreRecordedMessage {
@XStreamAlias("index")
@XStreamAsAttribute
private String filed1;
@XStreamAlias("type")
@XStreamAsAttribute
private String filed2;
@XStreamAlias("database_id")
@XStreamAsAttribute
private String filed3;
@XStreamAlias("description")
@XStreamAsAttribute
private String filed4;
@XStreamAlias("targets")
@XStreamAsAttribute
private String filed5;
@XStreamAlias("name")
@XStreamAsAttribute
private String filed6;
@XStreamAlias("ddu_id")
@XStreamAsAttribute
private String filed7;
@XStreamAlias("mode")
@XStreamAsAttribute
private String filed8;
@XStreamAlias("concurrent")
@XStreamAsAttribute
private String filed9;
@XStreamImplicit
private List<MultilingualString> multilingualStringList = new ArrayList<>();
}
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
@XStreamAlias("multilingual_string")
public class MultilingualString {
@XStreamAlias("name")
@XStreamAsAttribute
private String filed1;
@XStreamImplicit
private List<MlEntry> mlEntryList;
}
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@XStreamAlias("ml_entry")
public class MlEntry {
@XStreamAlias("lang")
@XStreamAsAttribute
private String filed1;
@XStreamAlias("val")
@XStreamAsAttribute
private String filed2;
}
创建测试类
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.naming.NoNameCoder;
import com.thoughtworks.xstream.io.xml.Xpp3Driver;
import com.thoughtworks.xstream.security.AnyTypePermission;
import java.io.File;
public class TestXStream {
public static void main(String[] args) throws Exception {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.addPermission(AnyTypePermission.ANY);
xStream.processAnnotations(PisProject.class);
PisProject pisProject = (PisProject)xStream
.fromXML(new File("TPA_library.xml"));
for (MlEntry mlEntry : pisProject.getPreRecordedMessageList().get(0).getMultilingualStringList().get(0).getMlEntryList()) {
System.err.println(mlEntry);
}
System.out.println("Object loaded by xstream: ");
}
}