Tag: xml serialization

如何使用jackson将java对象序列化为xml属性?

有没有办法通过jackson序列化java var(例如int)作为xml属性? 我找不到任何特定的jackson或json注释(@XmlAttribute @ javax.xml.bind.annotation.XmlAttribute)来实现这一点。 例如 public class Point { private int x, y, z; public Point(final int x, final int y, final int z) { this.x = x; this.y = y; this.z = z; } @javax.xml.bind.annotation.XmlAttribute public int getX() { return x; } … } 我想要的是: 但我得到的只是: 100 100 100 有没有办法获取属性而不是元素? 感谢帮助!

SimpleFramwork XML:具有内部文本和子元素的元素

我在使用无法更改的特定格式的SimpleFramework反序列化xml时有以下情况… THIS INNER TEXT IS THE ISSUE 45.7 42.7 45.7 42.7 这是我为Question写的课程 @Root (name=”Question”) public class Question { @Attribute (name=”ID”) private String id; @ElementList (inline=true, required=false) private List criteria; @Text private String text; // And their getter and setters… } 现在的问题是, 我无法获得内部文字…… 任何人都可以建议我这样做…… ???

将XML转换为对象的最佳方法

我正在使用Java在Google App Engine上创建一个应用程序,该应用程序接受标准XML文件并将其映射到对象,然后将其保存到数据存储区。 我期待相当多的条目/天(大约500+)..考虑到CPU和GAE / j的数据配额的成本,串行化xml的最佳方式是什么?

在JAXB中需要一个元素或另一个元素

我有一个这样的JAXB注释POJO: @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class Clazz implements Serializable { @XmlElement(required = false) private int a; @XmlElement(required = false) private int b; } 我想标记要求字段a或字段b 。 根据我目前的设置,它们都不是必需的,但我希望其中一个存在而不是另一个。 我怎么能实现它?

JAXB:如何自定义双字段的Xml序列化

我有一个遗留类,有很多公共双字段。 使用Double.MAX_VALUE初始化所有双字段以指示它们为空。 (遗留序列化被编码为忽略该字段,如果字段等于Double.MAX_VALUE则不进行序列化)。 我们现在尝试使用JAXB Marshaller将此类序列化为Xml。 它工作正常,除了我们想要阻止为等于Double.MAX_VALUE字段生成Xml。 我们没有使用单独的JAXB模式,只是用各种javax.xml.bind.annotation注释来标记我们的类。 如果使用模式,则可以添加元素以指定自定义DataType转换器。 有没有办法使用Annotations或以编程方式执行此操作? 在尝试下面推荐的方法之后,我仍然无法获得XmlAdapter : @XmlJavaTypeAdapters({ @XmlJavaTypeAdapter(value=EmptyDoubleValueHandler.class, type=Double.class), @XmlJavaTypeAdapter(value=EmptyDoubleValueHandler.class, type=double.class)}) package tta.penstock.data.iserver; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters; 我的顶级课程是:tta.penstock.data.iserver.OrderBlotter,其中包含扩展com.eztech.OrderResponse的tta.penstock.data.iserver.OrderResponseWrappers列表。 所有双字段都包含在com.eztech.OrderResponse 。 我的unit testing代码执行以下操作: JAXBContext context = JAXBContext.newInstance(new Class[] { OrderBlotter.class, OrderResponseWrapper.class, OrderResponse.class}); Marshaller marshaller = context.createMarshaller(); StringWriter stringWriter = new StringWriter(); marshaller.marshal(blotter, stringWriter); System.out.println(“result xml=\n” + stringWriter.toString()); 但是双值仍然无法由XmlAdapter处理。 我知道我遗漏了一些基本的东西,但我不确定它是什么。

使用apache commons配置XMLConfiguration格式化XML输出

我正在使用apache commons配置XMLConfiguration来构建和保存XML文件。 保存时没有格式化。 我有类似的东西: 我知道有很多方法可以使用其他库来获取输出并对其进行格式化,但是肯定必须有一种方法来设置像公共配置中的缩进一样简单的东西吗?

符号已定义。 使用JAXB属性来解决冲突

我有一个xsd文件(yahoo.xsd),我导入另一个xsd文件,如下所示: stock.xsd看起来像这样: 当我使用xjc进行编译时,我收到以下错误消息: [错误]属性“符号”已定义。 使用解决此冲突。 我基本上在SO上找到了这个解决方案( JAXB编译问题 – [错误]属性“任何”已经定义 )但是我无法让它工作。 我猜我的XPath是错的。 这是我正在使用的绑定文件: 如果我现在正在使用xjc -b进行编译,则表示XPath评估会导致空目标节点。 我可能要重命名Symbol定义,然后重命名? 怎么自动这样做?

Unmarshall期间无效的XML字符

我使用编码“UTF-8”将对象编组到XML文件。 它成功生成文件。 但是当我试图将其解组时,会出现错误: 在属性“{1}”的值中找到无效的XML字符(Unicode:0x {2}),元素为“0” 字符为0x1A或\ u001a,在UTF-8中有效,但在XML中是非法的。 JAXB中的Marshaller允许将此字符写入XML文件,但Unmarshaller无法解析它。 我试图使用另一种编码(UTF-16,ASCII等)但仍然出错。 常见的解决方案是在XML解析之前删除/替换此无效字符。 但是,如果我们需要这个角色,如何在解组之后获得原始角色? 在寻找此解决方案时,我想在解组之前用替换字符(例如dot =“。”)替换无效字符。 我创建了这个类: public class InvalidXMLCharacterFilterReader extends FilterReader { public static final char substitute = ‘.’; public InvalidXMLCharacterFilterReader(Reader in) { super(in); } @Override public int read(char[] cbuf, int off, int len) throws IOException { int read = super.read(cbuf, off, len); if (read == -1) […]

在将对象序列化为XML时如何添加XML命名空间(xmlns)

我在XStream的帮助下将对象序列化为XML。 如何告诉XStream将xmlns插入到对象的XML输出中? 举个例子,我有这个想要序列化的简单对象: @XStreamAlias(value=”domain”) public class Domain { @XStreamAsAttribute private String type; private String os; (…) } 如何使用XStream实现以下输出? linux

SAX Parser和XML Schema(XSD)validation

哪些Java XML库可以同时对XML Schema(XSD)进行基于SAX的解析和validation? 我真的在寻找最有效的解读和validation大型XML文件的解决方案。 如果您可以提供示例代码,则可获得奖励