在我正在使用的(Java)代码中,有时会处理格式不正确的XML(表示为Java String
),例如:
<root>
<foo>
bar & baz < quux
</foo>
</root>
由于最终将需要对XML进行解组(使用JAXB),因此,显然,这种XML会在解组时引发异常。
将
&
和<
替换为其字符实体的最佳方法是什么?对于&
,它很简单:xml.replaceAll("&", "&")
但是,对于
<
符号,这有点棘手,因为显然我不想替换用于XML标签打开“括号”的<
。除了扫描字符串并将XML正文中的
<
手动替换为<
之外,您还能建议其他什么选择? 最佳答案
坦白说,修复格式错误的XML的最佳方法是将其发送回给产生它的任何人,并要求他们向您发送格式正确的XML。您展示了一个简单的示例,它可能有解决方案,但是修复格式错误的XML的通用方法将是一项艰巨的工作。
而且由于不需要XML解析器来处理格式错误的XML,所以您的解析器也不需要。只是不要这样做。