【问题标题】:StAX how do you preserve XML data exactly as isStAX 您如何按原样保存 XML 数据
【发布时间】:2013-03-21 12:46:54
【问题描述】:

我需要保留一些从另一个系统接收到的 XML 数据。以下是我们收到的示例:

<SomeTag display="1 2 3 4 5 &lt;anotherTag>someValue&lt;/anotherTag>" />

当它被读入然后保存到我们的数据库时,它是这样保存的:

<SomeTag display="1 2 3 4 5 &lt;anotherTag&gt;someValue&lt;/anotherTag&gt;" />

我想在不编码 > 符号的情况下完全保留数据。

【问题讨论】:

  • 为什么?就任何 XML 解析器而言,这两种形式都是相同的。如果您关心差异,那么您不应该使用像 StAX 这样的 XML API 来处理数据。事实上,当您从 StAX 解析器获取属性值时,您无法知道它是否在原始字节中表示为 &amp;gt;&amp;gt;&amp;#x3E 或其他。
  • 我同意,这就是我的想法。只是想验证一下。谢谢大家!

标签: java stax


【解决方案1】:

如果你只有有StAX事件,那么没有,没有办法实现这一点,因为当你得到一个属性值

1 2 3 4 5 <anotherTag>someValue</anotherTag>

从 StAX 解析器无法知道原始字节是什么样的 - 大于号可能是 &amp;gt;&amp;gt;&amp;#x3E;,所有这些形式在解析时将产生相同的值,并且任何XML 解析器必须将它们视为等价的。

如果您关心精确的原始表示,那么您必须在 XML 世界之外执行此操作 - 在 StAX 解析器解析原始字节之前以某种方式保存它们,使用正确的字符编码对其进行解码,然后存储结果字符串直接输入到您的数据库中。

【讨论】:

    【解决方案2】:

    如果您将从另一个系统收到的 xml 保存为 DB 列中的字符串而不进行处理,它将保证按原样保留它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-15
      • 1970-01-01
      • 2014-05-07
      • 2017-03-13
      • 2015-08-02
      • 2016-06-06
      • 2019-12-17
      • 1970-01-01
      相关资源
      最近更新 更多