在我正在使用的(Java)代码中,有时会处理格式不正确的XML(表示为Java String),例如:

<root>
  <foo>
    bar & baz < quux
  </foo>
</root>


由于最终将需要对XML进行解组(使用JAXB),因此,显然,这种XML会在解组时引发异常。

&<替换为其字符实体的最佳方法是什么?对于&,它很简单:

xml.replaceAll("&", "&amp;")


但是,对于<符号,这有点棘手,因为显然我不想替换用于XML标签打开“括号”的<

除了扫描字符串并将XML正文中的<手动替换为&lt;之外,您还能建议其他什么选择?

最佳答案

坦白说,修复格式错误的XML的最佳方法是将其发送回给产生它的任何人,并要求他们向您发送格式正确的XML。您展示了一个简单的示例,它可能有解决方案,但是修复格式错误的XML的通用方法将是一项艰巨的工作。

而且由于不需要XML解析器来处理格式错误的XML,所以您的解析器也不需要。只是不要这样做。

09-09 20:49
查看更多