java xml 序列化 反序列化,在java中进行xml解析时,跳过元素的反序列化并将整个内容作为字符串获取...

本文探讨了如何使用Jackson-dataformat-xml配合JAXB的DomHandler处理XML数据,展示了如何创建Unmarshaller并捕获内部元素,但强调了处理内联HTML/XML的有效性限制。遇到的异常提示了XML结构的重要性。
摘要由CSDN通过智能技术生成

不幸的是,这是不可能的

jackson-dataformat-xml

但是,使用JAXB可以通过使用

DomHandler

@XmlRootElement(name = "content")

@XmlAccessorType(XmlAccessType.FIELD)

public class Content {

@XmlAnyElement(InnerXmlHandler.class)

private String p;

}

域处理程序

import javax.xml.bind.ValidationEventHandler;

import javax.xml.bind.annotation.DomHandler;

import javax.xml.transform.Source;

import javax.xml.transform.stream.StreamResult;

import javax.xml.transform.stream.StreamSource;

import java.io.StringReader;

import java.io.StringWriter;

public class InnerXmlHandler implements DomHandler {

private static final String START_TAG = "

";

private static final String END_TAG = "

";

private StringWriter xmlWriter = new StringWriter();

public StreamResult createUnmarshaller(ValidationEventHandler errorHandler) {

return new StreamResult(xmlWriter);

}

public String getElement(StreamResult rt) {

String xml = rt.getWriter().toString();

int beginIndex = xml.indexOf(START_TAG) + START_TAG.length();

int endIndex = xml.lastIndexOf(END_TAG);

return xml.substring(beginIndex, endIndex);

}

public Source marshal(String n, ValidationEventHandler errorHandler) {

try {

String xml = START_TAG + n.trim() + END_TAG;

StringReader xmlReader = new StringReader(xml);

return new StreamSource(xmlReader);

} catch (Exception e) {

throw new RuntimeException(e);

}

}

}

标签如下:

This is some

  • list
and

nested paragraph

但是,这只在内部HTML/XML有效时才起作用。以下操作将不起作用,并引发如下异常

The element type "ul" must be terminated by the matching end-tag ""

.

This is some

  • invalid xml

这是因为尽管提供了dom处理程序,JAXBs内部仍然遍历所有内部元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值