【发布时间】:2011-03-01 19:38:18
【问题描述】:
在我正在处理的(Java)代码中,我有时会处理格式不正确的 XML(表示为 Java String),例如:
<root>
<foo>
bar & baz < quux
</foo>
</root>
由于这个 XML 最终需要被解组(使用 JAXB),显然这个 XML 会在解组时抛出异常。
将& 和&lt; 替换为其字符实体的最佳方法是什么?对于&,很简单:
xml.replaceAll("&", "&")
但是,对于 &lt; 符号,这有点棘手,因为显然我不想替换用于 XML 标记开头“括号”的 &lt;。
除了扫描字符串并手动将 XML 正文中的 &lt; 替换为 &lt; 之外,您还有什么建议?
【问题讨论】:
-
您的程序将如何区分文本中的 (位于 foo 元素内)和 XML 中的 (以 foo 元素结尾)?
-
如何判断
&lt;是否是打开标签? -
每个标签和值是否像您的示例一样打印在一行上?
-
@Sjoerd:就本应用而言,可以安全地假设正文中没有“XML 结束标记”,即正文中没有
</foo>跨度> -
@stacker: 不,整个 XML 可以在 1 行中。
标签: java xml non-well-formed