【问题标题】:converting xml to java objects with xstream in java在java中使用xstream将xml转换为java对象
【发布时间】:2014-12-17 09:35:36
【问题描述】:

我有一个 xml ans 我想让它成为对象,我为此使用 xsteam 并且我在我的类路径中添加了 xstream jars..

下面是我的xml...

<Eurexflows xmlns:eur="http://www.eurexchange.com/EurexIRSFullInventoryReport" xmlns:fpml="http://www.fpml.org/FpML-5/confirmation">
<EurexMessageObject>
<CCPTradeId>109599</CCPTradeId>
<novDateTime>2012-02-15 10:59:00.0</novDateTime>
</EurexMessageObject>
<EurexMessageObject>
<CCPTradeId>122270</CCPTradeId>
<novDateTime>2012-06-29 18:59:00.0</novDateTime>
</EurexMessageObject>
</Eurexflows>

下面是我的pojo...

public class EurexMessageObject {

    private Long CCPTradeId;
    private String migratedDate;

    public Long getCCPTradeId() {
        return CCPTradeId;
    }

    public void setCCPTradeId(Long cCPTradeId) {
        CCPTradeId = cCPTradeId;
    }

    public String getMigratedDate() {
        return migratedDate;
    }

    public void setMigratedDate(String migratedDate) {
        this.migratedDate = migratedDate;
    }


}

在我的主课中,我是这样编码的..

String xmlInputtra="C:\\Rahul\\InputXml\\Xmloutput.xml";
         try
         {

      // get XStream instance and set required aliases
            XStream xstream = new XStream();
            xstream.alias("EurexMessageObject", com.rbos.gdspc.eurex.EurexMessageObject.class);
            // prepare cash flow message from xslt output
            EurexMessageObject eurexflowMsg = (EurexMessageObject) xstream.fromXML(xmlInputtra);
            System.out.println(eurexflowMsg.toString());

         }catch(Exception e)
         {
             e.printStackTrace();
         }

现在在调试时我得到以下异常..请告知我该如何克服这个问题

com.thoughtworks.xstream.io.StreamException:  : only whitespace content allowed before start tag and not C (position: START_DOCUMENT seen C... @1:1) 

【问题讨论】:

  • 您应该在 var xmlInputtra 中放入 xml 而不是路径。

标签: java xstream


【解决方案1】:

好吧,这里忽略的是你是如何阅读 XML 文件的。你使用的是 fromXML 方法,它期待实际的 XML输入而不是文件名。因此,当它解析您的 xml(这是“Xmloutput.xml”而不是实际的 xml)时

我建议您使用 FileReader/BufferedReader 来获取 XML 的内容。这样的事情应该可以工作:

XStream instream = new XStream();

BufferedReader br = new BufferedReader(new FileReader("Xmloutput.xml"));
StringBuffer buff = new StringBuffer();
String line;
while((line = br.readLine()) != null){
   buff.append(line);
}
EurexMessageObject eurexflowMsg = (EurexMessageObject)instream.fromXML(buff.toString());

希望对你有帮助,最好的问候。

【讨论】:

    【解决方案2】:

    这里是 XML 文件的路径:

    String xmlInputtra="C:\\Rahul\\InputXml\\Xmloutput.xml";
    

    被视为 XML 内容, 所以你需要作为字符串传递,你可以读取文件并传递给构造函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-15
      • 1970-01-01
      • 2014-12-01
      • 2014-09-25
      • 2011-03-09
      相关资源
      最近更新 更多