Java StAX - 解析时出错 - 非法字符实体:扩展字符代码 0x19

Java StAX - error when parsing - Illegal character entity: expansion character code 0x19

我是 reading/parsing 一个 XML 文件 javax.xml.stream.XMLStreamReader
该文件包含如下所示的XML条数据。

<Row>
  <AccountName value="Paving 101" />
  <AccountNumber value="20205" />
  <AccountId value="15012" />
  <TimePeriod value="2019-08-20" />
  <CampaignName value="CMP Paving 101" />
  <CampaignId value="34283" />
  <AdGroupName value="residential paving" />
  <AdGroupId value="1001035" />
  <AdId value="790008" />
  <AdType value="Expanded text ad" />
  <DestinationUrl value="" />
  <BidMatchType value="Broad" />
  <Impressions value="1" />
  <Clicks value="1" />
  <Ctr value="100.00%" />
  <AverageCpc value="1.05" />
  <Spend value="1.05" />
  <AveragePosition value="2.00" />
  <SearchQuery value="concrete&#x19;driveway&#x19;repair&#x19;methods" />
</Row>

不幸的是,我遇到了这个错误,我不确定如何解决它。

    Error in downloadXML: 
    com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x19
     at [row,col {unknown-source}]: [674,40]
        at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:606)
        at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:479)
        at com.ctc.wstx.sr.StreamScanner.reportIllegalChar(StreamScanner.java:2448)
        at com.ctc.wstx.sr.StreamScanner.validateChar(StreamScanner.java:2395)
        at com.ctc.wstx.sr.StreamScanner.resolveSimpleEntity(StreamScanner.java:1218)
        at com.ctc.wstx.sr.BasicStreamReader.parseAttrValue(BasicStreamReader.java:1929)
        at com.ctc.wstx.sr.BasicStreamReader.handleNsAttrs(BasicStreamReader.java:3063)
        at com.ctc.wstx.sr.BasicStreamReader.handleStartElem(BasicStreamReader.java:2961)
        at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2837)
        at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1072)

这个字符似乎有问题 &#x19
当然,我可以首先将文件简单地作为文本文件读取,并替换这个坏字符,然后才用 XMLStreamReader 解析它但是:
1) 这种方法对我来说真的很笨拙;
2) 代码比较复杂,做起来会有点困难,
所以我不确定我是否只想为这个角色改变它。

为什么 XMLStreamReader 无法处理这个字符?
是XML无效还是解析器有bug没处理好?

字符&<>(以及属性中的"')在XML中无效.

它们使用 XML 个实体进行转义,在这种情况下,您需要 &amp; 用于 &

您的 XML 对于每个正确的库都是无效的; (您需要的可能是此 XML 内容的制作人)

**编辑* 来自 https://www.w3.org/TR/xml/#NT-Char

实体引用的允许范围:

Reference ::= EntityRef | CharRef 
EntityRef ::=       '&' Name ';'
CharRef   ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]    /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */