Java Jackson XmlMapper将XML转换为POJO、节点文本';s的关键是&引用;
我试图从服务读取XML数据(我无法更改数据),但JacksonJava Jackson XmlMapper将XML转换为POJO、节点文本';s的关键是&引用;,java,xml,groovy,jackson,pojo,Java,Xml,Groovy,Jackson,Pojo,我试图从服务读取XML数据(我无法更改数据),但JacksonXmlMapper出现问题。如果我有这样的XML: <entry> <title type="text">W411638</title> </entry> 我尝试使用以下代码将其转换为对象: XmlMapper xmlMapper = new XmlMapper() Entry entry = xmlMapper.readValue(xmlData, Entry.class)
XmlMapper
出现问题。如果我有这样的XML:
<entry>
<title type="text">W411638</title>
</entry>
我尝试使用以下代码将其转换为对象:
XmlMapper xmlMapper = new XmlMapper()
Entry entry = xmlMapper.readValue(xmlData, Entry.class)
我的入门课是这样的:
class Entry {
static class Title {
//String __; //-- This is what I can't figure out --
String type;
}
Title title;
}
问题是我找不到任何方法将标题文本(“W411638”)放入entry对象。类型很好,我可以通过entry.title.type获得它,它是正确的,我只是不知道如何获得标题值 这对我来说是一个独立的Groovy脚本
@Grab( 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.0.5' )
import com.fasterxml.jackson.dataformat.xml.XmlMapper
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText
class Entry {
static class Title {
public String type
@JacksonXmlText
public String value
public String toString() {
"$type -> $value"
}
}
public Title title
public String toString() {
"Entry [$title]"
}
}
def xml = '''<entry>
| <title type="text">W411638</title>
|</entry>'''.stripMargin()
def xmlMapper = new XmlMapper()
Entry pojo = xmlMapper.readValue( xml, Entry )
println pojo // prints 'Entry [text -> W411638]'
@Grab('com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.0.5')
导入com.fasterxml.jackson.dataformat.xml.XmlMapper
导入com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText
班级报名{
静态类标题{
公共字符串类型
@JacksonXmlText
公共字符串值
公共字符串toString(){
“$type->$value”
}
}
公开头衔
公共字符串toString(){
“条目[$title]”
}
}
def xml=''
|W411638
|''.stripMargin()
def xmlMapper=new xmlMapper()
条目pojo=xmlMapper.readValue(xml,条目)
println pojo//打印“条目[text->W411638]”
祝你好运,这对你也有用 因此,我能够使用@JSONCreator解决这个问题 xml
CDATA文本
X.java
public class A
{
private B b;
private D d;
private String cdata;
@JsonCreator
public PropertyDef(Map<String,Object> props)
{
setB((String) props.get("b"));
setD((String) props.get("d"));
setCdata((String) props.get(""));
}
}
公共A类
{
私人B,;
私家侦探;
私有字符串cdata;
@JsonCreator
公共属性DEF(地图道具)
{
setB((String)props.get(“b”);
setD((String)props.get(“d”);
setCdata((字符串)props.get(“”);
}
}
<x>
<a b="c" d="e">CDATA Text</a>
</x>
public class A
{
private B b;
private D d;
private String cdata;
@JsonCreator
public PropertyDef(Map<String,Object> props)
{
setB((String) props.get("b"));
setD((String) props.get("d"));
setCdata((String) props.get(""));
}
}