Java 如何使用xlink:href序列化xml标记
当您有这样的xml时:Java 如何使用xlink:href序列化xml标记,java,xml,jackson,jaxb,Java,Xml,Jackson,Jaxb,当您有这样的xml时: <?xml version="1.0" encoding="UTF-8"?> <gml:FeatureCollection> <gml:featureMember> <imkl:Foo gml:id="Foo_1"> <imkl:Bar xlink:href="Bar_1"/> <key>valueFoo</key>
<?xml version="1.0" encoding="UTF-8"?>
<gml:FeatureCollection>
<gml:featureMember>
<imkl:Foo gml:id="Foo_1">
<imkl:Bar xlink:href="Bar_1"/>
<key>valueFoo</key>
</imkl:Foo>
</gml:featureMember>
<gml:featureMember>
<imkl:Bar gml:id="Bar1">
<key>valueBar</key>
</imkl:Bar>
</gml:featureMember>
</gml:FeatureCollection>
福类
如果我理解正确,您希望解析内部属性,如果是这样,您只需使用:
publicstaticvoidmain(字符串[]args)引发IOException{
XmlMapper mapper=新的XmlMapper();
//简化XML
字符串str=“”+
“\n”+
“\n”+
" ";
gebiedInformatieLevering=mapper.readValue(str.getBytes(),gebiedInformatieLevering.class);
System.out.println(levering.getbelanghebbend().getHref());
}
公共静态类Belanghebbende{
@XmlAttribute
私有字符串href;
//接球手和接球手
}
公共静态类GebiedInformatieLevering{
私有字符串文本;
@XmlIDREF
@XmlElement(name=“belanghebbende”)
私人贝朗赫本德贝朗赫本德;
@XmlID
@XmlElement
私有字符串id;
//接球手和接球手
}
}
输出:
nl.imkl-KL1011._Belanghebbende_19O081120-1
或者您是否需要此链接作为其他条目的标识符
我简化了我的问题。我只想加载带有相应id的Bar实例的
Foo
。
import javax.persistence.Id;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlID;
public class Bar{
@Id
@XmlID
@XmlElement
private String id; //should be "Bar_1"
private String key; //should be "valueBar"
...
}
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlIDREF;
public class Foo{
@Id
@XmlID
@XmlElement
private String id; //should be "Foo_1"
private String key; //should be "valueFoo"
@XmlIDREF
@XmlElement(name = "Bar")
private Bar bar; //Should be Bar with id "Bar_1" and key with "valueBar"
...
}
public static void main(String[] args) throws IOException {
XmlMapper mapper = new XmlMapper();
// Simplified XML
String str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
" <GebiedsinformatieLevering id=\"nl.imkl-KA0000._GebiedsinformatieLevering_19O081120-1\">\n" +
" <belanghebbende href=\"nl.imkl-KL1011._Belanghebbende_19O081120-1\"/>\n" +
" </GebiedsinformatieLevering>";
GebiedsinformatieLevering levering = mapper.readValue(str.getBytes(), GebiedsinformatieLevering.class);
System.out.println(levering.getBelanghebbende().getHref());
}
public static class Belanghebbende {
@XmlAttribute
private String href;
// getters & setters
}
public static class GebiedsinformatieLevering {
private String text;
@XmlIDREF
@XmlElement(name = "belanghebbende")
private Belanghebbende belanghebbende;
@XmlID
@XmlElement
private String id;
// getters & setters
}
<imkl:Belanghebbende gml:id="nl.imkl-KL1011._Belanghebbende_19O081120-1">