【问题标题】:Deserializing XML with defined ENTITY to objects using XStream / StaxDriver使用 XStream / StaxDriver 将具有定义实体的 XML 反序列化为对象
【发布时间】:2017-11-21 22:40:57
【问题描述】:

我想使用 XStream 将 XML 文件反序列化为 java/groovy 对象。 XML 文件已定义实体。所以我使用 StaxDriver 来自动解析实体。但 StaxDriver/XStream 忽略/删除部分内容。

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE parent [
<!ENTITY File_file SYSTEM "File_file.xml">
]>

<parent>
	<name>NAME</name>
	<description>DSCRIPTION</description>
	<context>
	    <files>
&File_file;
</files>
	</context>
</parent>

反序列化并再次打印为 XML 后:预期为:

<?xml version="1.0" encoding="UTF-8"?>
<parent>
	<name>NAME</name>
	<description>DSCRIPTION</description>
   <context>
      <files>
<file>
    <name>name</name>
    <path>location path</path>
</file>
      </files>
   </context>
</parent>

但我在下面看到:

<?xml version="1.0" encoding="UTF-8"?>
<parent>
	<name>NAME</name>
	<description>DSCRIPTION</description>
   <context>
      <files>
<file>
</file>
      </files>
   </context>
</parent>

反序列化 xml 内容的代码/逻辑。

    public class Parser {

public static void main(String[] args) {
    if (args.length != 1) {
        System.out.println("Usage:Parser <Input File>");
        return;
    }
    XStream xstream = new XStream(new StaxDriver());
    xstream.alias("parent", Parent.class);
    xstream.alias("context", Context.class);
    xstream.alias("files", Files.class);
    xstream.addImplicitCollection(Files.class, "files");
    xstream.alias("files", File.class);
    String xml = Util.getFileText(args[0]);//file.text;
    System.out.println(xml);
    Parent te = (Parent)xstream.fromXML(xml);
    System.out.println(XmlUtil.serialize(xstream.toXML(te)));
}

}

【问题讨论】:

    标签: java xml xstream stax


    【解决方案1】:

    问题被识别为在 XStream alias() 中引用的用于转换的 File.class。不是使用本地 com.app.model.File.class,而是使用 java.io.File.class 导致解析器/xstream 不转换标签,最终将其删除。

    【讨论】:

      猜你喜欢
      • 2013-03-24
      • 2015-04-13
      • 2011-03-09
      • 2019-03-29
      • 2013-03-23
      • 1970-01-01
      • 2023-03-27
      • 2014-07-09
      • 1970-01-01
      相关资源
      最近更新 更多