Java Parser XML示例

时间:2011-12-28 14:41:29

标签: java xml parsing xstream

enter code here我要反序化这个XML:

<rows profile="color">
    <head>
        <columns>
            <column width="0" align="left" type="ro" sort="str" color=""><![CDATA[#]]></column>
            <column width="80" align="left" type="ro" sort="str" color=""><![CDATA[Targa]]></column>
            <column width="100" align="left" type="ro" sort="str" color=""><![CDATA[Telaio]]></column>
            <column width="150" align="left" type="ro" sort="str" color=""><![CDATA[Tipo]]></column>
            <column width="70" align="left" type="ro" sort="str" color=""><![CDATA[Archivio]]></column>
            <column width="220" align="left" type="co" sort="str" color=""><![CDATA[Commenti]]><option value="A">A</option><option value="B">B</option><option value="C">C</option></column>
            <column width="180" align="left" type="ed" sort="str" color=""><![CDATA[Destinatario]]></column>
        </columns>
    </head>
    <row>
        <cell><![CDATA[775]]></cell>
        <cell><![CDATA[AA000AA]]></cell>
        <cell><![CDATA[RTGGSHHJSJSNN]]></cell>
        <cell><![CDATA[CDP]]></cell>
        <cell><![CDATA[18]]></cell>
        <cell><![CDATA[...]]></cell>
        <cell><![CDATA[ ]]></cell>
    </row>
</rows>

但我没有定义的课程,我怎么能这样做?我会使用xstream库,但我不知道如何使用它。

编辑:

但是,如果我想创建一个目标类,我是如何创建它的?我应该有类似的东西:

public class Rows { 
    private Head head; 
    private Row[] row; 
}

public class Head { 
    private Columns columns;
} 

public class Columns {
    private Column column; // How can I get attributes?
}

public class Row {
    private String [] cell;
}

以后如何使用xstream?

3 个答案:

答案 0 :(得分:2)

看看JAXB。 (http://jaxb.java.net/

这是一个很棒的库,用于在类中读取/写入XML。 我知道它有一些插件。 我几乎可以肯定你可以从XML文件生成/创建类,或者从带注释的类创建XML。

一些例子: http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.6/tutorial/doc/JAXBUsing3.html

Hello World:http://jaxb.java.net/tutorial/section_1_3-Hello-World.html

答案 1 :(得分:0)

由于您没有XStream可以反序列化的目标类,因此您必须使用其他XML解析器。

您可以查看StAX。您可以找到如何使用它herehere

答案 2 :(得分:0)

使用SAX

  

SAX解析器与DOM解析器的工作方式不同,它可以加载任何XML   将文档记录到内存中,也不创建XML的任何对象表示   文献。相反,SAX解析器使用回调函数   (org.xml.sax.helpers.DefaultHandler)通知客户端XML   文件结构。

如果您想使用Digester

从XML创建一个类

Example