用java实现XML映射
我有以下XML:用java实现XML映射,java,xml,mapping,Java,Xml,Mapping,我有以下XML: <?xml version="1.0" encoding="utf-16"?> <ROOT> <fieldset> <field Id="c0" Name="_ID_VERSION" DataType="int"/> <field Id="c1" Name="_TYPE" DataType="string"/> <field Id="c2" Name="_P
<?xml version="1.0" encoding="utf-16"?>
<ROOT>
<fieldset>
<field Id="c0" Name="_ID_VERSION" DataType="int"/>
<field Id="c1" Name="_TYPE" DataType="string"/>
<field Id="c2" Name="_PRODUCT" DataType="string"/>
<field Id="c3" Name="_VERSION" DataType="string"/>
<field Id="c4" Name="_REVISION" DataType="int"/>
<field Id="c5" Name="_STATE" DataType="string"/>
<field Id="c6" Name="_DOCUMENT" DataType="int"/>
<field Id="c7" Name="_HAS_LINK" DataType="int"/>
<field Id="c8" Name="_LOCKED" DataType="int"/>
<field Id="c9" Name="_ACCESSLEVEL" DataType="int"/>
<field Id="c10" Name="_LABEL" DataType="int"/>
<field Id="c11" Name="_LABEL_NAME" DataType="string"/>
</fieldset>
<rowset>
<row c0="2932" c1="" c2="{3FDAC10D-5361-4C32-B79E-D391DCB3AE98}" c3="" c4="0" c5="" c6="0" c7="1" c8="0" c9="3" c10="-1" c11=""/>
<row c0="3146" c1="0" c2="MyProject" c3="" c4="0" c5="" c6="0" c7="1" c8="1" c9="3" c10="-1" c11=""/>
<row c0="3147" c1="" c2="tes" c3="" c4="0" c5="" c6="0" c7="1" c8="0" c9="3" c10="-1" c11=""/>
<row c0="2933" c1="" c2="" c3="" c4="0" c5="" c6="0" c7="1" c8="0" c9="3" c10="-1" c11=""/>
<row c0="3048" c1="" c2="" c3="" c4="0" c5="" c6="0" c7="1" c8="0" c9="3" c10="-1" c11=""/>
</rowset>
</ROOT>
但是我想自动地去做。这个问题可能会碰到大多数离题的问题推荐工具、基于意见、迄今为止你尝试过的东西等等。但是,嘿,不管怎样。:) 这里有一个我喜欢的基于观点的工具推荐,即 编写并注释您的POJO:
@XmlRootElement(name="ROOT")
public class Dataset {
@XmlElementWrapper(name="fieldset")
@XmlElement(name="field")
public List<Field> fields = new LinkedList<Field>();
@XmlElementWrapper(name="rowset")
@XmlElement(name="row")
public List<Row> rows = new LinkedList<Row>();
}
public class Field {
@XmlElement(name="Id")
public String id;
@XmlElement(name="Name")
public String name;
@XmlElement(name="DataType")
public String dataType;
}
public class Row {
@XmlAnyElement
public Map<QName, String> columns = new HashMap<QName, String>();
}
JAXB中的“解析”称为“解组:
final Unmarshaller = contect.createUnmarshaller();
final Dataset dataset = (Dataset) unmarshaller.unmarshal(source);
我只是在这里草拟了代码,所以这可能从一开始就不起作用,但你明白了
我也不确定这些是不是你想要的POJO,但这可能是一个好的开始
除了JAXB,您可能还可以使用几十个其他库来完成此任务。请不要将JAXB作为唯一的答案,同时检查备选方案。此:
看起来不是有效的XML。抱歉,XML美化错误编码。您的pojo应该是什么样子?您有架构吗?是否要获取具有属性的内容idVersion
,type
,product
等或字段集
,行集
等?不是,我没有架构文件。是的,它是从programm中输出的API。我想将其转换为pogo,以便在下一步使用它。谢谢!这对我很有帮助!
final JAXBContext context = JAXBContext.newInstance(Dataset.class);
final Unmarshaller = contect.createUnmarshaller();
final Dataset dataset = (Dataset) unmarshaller.unmarshal(source);