-1

我想解组其中包含“&”字符的 xmlString。

    XMLInputFactory xif = XmlUtils.newXMLInputFactory();
    String test = "<Res>Abc & Def</Res>";
    StringReader sr = new StringReader(test);
    try {
      XMLStreamReader reader = xif.createXMLStreamReader(sr);
      JAXBContext jaxbContext = JAXBContext.newInstance(BluelineReprintInvoiceResponseData.class);
      Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
      Object o = unmarshaller.unmarshal(reader);
    } catch(Exception ex) {
      ex.printStackTrace();
    }

有没有办法在不使用 replace/replaceAll 替换字符串中的 '&' 字符的情况下解组字符串?

4

1 回答 1

1

有没有办法在不使用replace/replaceAll替换&字符串中的字符的情况下解组字符串?

基本上没有,因为那是无效的XML。在这种情况下,不允许使用裸 & 符号。任何符合标准的 XML 解析器都会在遇到解析错误&然后找不到相应的;

正确的解决方案是从源头修复(所谓的)XML 。曾经以 XML 格式生成该字符串是错误的。如果它是由人输入的,则应在输入时验证 XML。

请注意,如果您尝试使用字符串替换自动“更正”损坏的 XML 中的裸 & 符号,则可能会造成其他损害;IE

  • 破坏字符和实体引用,或
  • 弄乱 CDATA 部分的内容。

自动更正代码需要了解 & 符号出现的上下文。使用正则表达式会很困难。

于 2021-12-07T13:30:59.540 回答