Java DomHandler可捕获多条记录的文本
我试图将@xmlanyement与DomHandler结合使用,以捕获特定字段中未解析的文本,如Blaise Doughan的示例所示。但是,当我试图解析多个客户时,来自所有以前记录的bio字段的内容将继续发送到我的DomHandler 下面是我试图解析的示例文档:Java DomHandler可捕获多条记录的文本,java,xml,jaxb,Java,Xml,Jaxb,我试图将@xmlanyement与DomHandler结合使用,以捕获特定字段中未解析的文本,如Blaise Doughan的示例所示。但是,当我试图解析多个客户时,来自所有以前记录的bio字段的内容将继续发送到我的DomHandler 下面是我试图解析的示例文档: <?xml version="1.0" encoding="UTF-8"?> <customers> <customer> <name>Jane Doe</nam
<?xml version="1.0" encoding="UTF-8"?>
<customers>
<customer>
<name>Jane Doe</name>
<bio>
<html>Jane's bio</html>
</bio>
</customer>
<customer>
<name>John Doe</name>
<bio>
<html>John's bio</html>
</bio>
</customer>
</customers>
客户
package blog.domhandler;
import java.util.List;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement
public class Customers {
private List<Customer> customers;
public List<Customer> getCustomer() {
return customers;
}
public void setCustomer(List<Customer> c) {
this.customers = c;
}
}
当我在BioHandler.getElement()中放置断点时,我看到它的被调用字符串xml第一次接受该值
<?xml version="1.0" encoding="UTF-8"?><bio><html>Jane's bio</html>
</bio>
<?xml version="1.0" encoding="UTF-8"?><bio><html>Jane's bio</html>
</bio><?xml version="1.0" encoding="UTF-8"?><bio><html>John's bio</html>
</bio>
简的简历
而第二次调用字符串时,xml接受该值
<?xml version="1.0" encoding="UTF-8"?><bio><html>Jane's bio</html>
</bio>
<?xml version="1.0" encoding="UTF-8"?><bio><html>Jane's bio</html>
</bio><?xml version="1.0" encoding="UTF-8"?><bio><html>John's bio</html>
</bio>
简的简历
约翰的简历
是否有某种方法可以向解析器表明,在每次调用BioHandler.getElement()之后,应该丢弃此内容?结果证明,我的问题是通过本示例所引用的帖子上的第一条评论得到了回答。BioHandler.createUnmarshaller()的代码应为:
public StreamResult createUnmarshaller(ValidationEventHandler errorHandler) {
xmlWriter.getBuffer().setLength(0);
return new StreamResult(xmlWriter);
}
<?xml version="1.0" encoding="UTF-8"?><bio><html>Jane's bio</html>
</bio><?xml version="1.0" encoding="UTF-8"?><bio><html>John's bio</html>
</bio>
public StreamResult createUnmarshaller(ValidationEventHandler errorHandler) {
xmlWriter.getBuffer().setLength(0);
return new StreamResult(xmlWriter);
}