Java StAX如何保持XML数据的原样
我需要保留一些XML数据,使其与从另一个系统接收到的数据完全一致。以下是我们收到的示例:Java StAX如何保持XML数据的原样,java,stax,Java,Stax,我需要保留一些XML数据,使其与从另一个系统接收到的数据完全一致。以下是我们收到的示例: <SomeTag display="1 2 3 4 5 <anotherTag>someValue</anotherTag>" /> 当读入并保存到我们的数据库时,它的保存方式如下: <SomeTag display="1 2 3 4 5 <anotherTag>someValue</anotherTa
<SomeTag display="1 2 3 4 5 <anotherTag>someValue</anotherTag>" />
当读入并保存到我们的数据库时,它的保存方式如下:
<SomeTag display="1 2 3 4 5 <anotherTag>someValue</anotherTag>" />
我想保持数据的原样,而不是对>符号进行编码。如果您将从另一个系统收到的xml作为字符串保存在DB列中,而不进行处理,则可以保证将其保持原样。如果您只有StAX事件,则不,这是无法实现的,因为当你得到一个属性值
1 2 3 4 5 <anotherTag>someValue</anotherTag>
12345somevalue
从StAX解析器无法知道原始字节是什么样子的-大于号可能是
或
或&x3E代码>,所有这些表单在解析时都将产生相同的值,任何XML解析器都必须将它们视为等价的
如果您关心精确的原始表示,那么您将不得不在XML世界之外执行此操作—在StAX解析器解析原始字节之前以某种方式保存原始字节,使用正确的字符编码对其进行解码,并将生成的字符串直接存储到数据库中。为什么?就任何XML解析器而言,这两种形式都是相同的。如果您关心差异,那么就不应该使用像StAX这样的xmlapi来处理数据。事实上,您无法知道当您从StAX解析器获取属性值时,它是否在原始字节中表示为
,
,>
或其他任何形式。我同意,这就是我的想法。只是想核实一下。谢谢大家!