gpt4 book ai didi

java - 实体 "uuml"已被引用,但未声明 - XMLStreamException

转载 作者:行者123 更新时间:2023-12-01 11:18:03 26 4
gpt4 key购买 nike

尝试从 SpreadsheetML 2003(基本上是 XML)生成 XLSX 文件。使用数据库中的 CLOB,CLOB 包含 SpreadsheetML 2003 (XML)。我试图通过 STAX 解析器解析 xml,并使用 POI API 将其写入 XLSX 文件。但在 stax 中处理时,它抛出以下异常。

注意:使用 XML 编码 UTF-8 格式。

异常:

javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,16706]
Message: The entity "uuml" was referenced, but not declared.
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:588)
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.getElementText(XMLStreamReaderImpl.java:845)
at com.db.smis.planus.servlet.ServletApp.doProcess(ServletApp.java:224)

示例 XML:

  <?xml version="1.0"? encoding="UTF-8">
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<Row>
<Cell ss:StyleID="s29"><Data ss:Type="Number">7662</Data></Cell>
<Cell ss:StyleID="s73"><Data ss:Type="String">C. &amp; A. AAAAA &amp; CO. KG</Data></Cell>
</Row>
<Row>
<Cell ss:StyleID="s29"><Data ss:Type="Number">7662</Data></Cell>
<Cell ss:StyleID="s28"><Data ss:Type="String">M&uuml;nchen,K&ouml;ln</Data></Cell>
</Row>
<Row>
<Cell ss:StyleID="s29"><Data ss:Type="Number">7662</Data></Cell>
<Cell ss:StyleID="s28"><Data ss:Type="String">D&uuml;sseldorf</Data></Cell>
</Row>
</Workbook>

最佳答案

您需要声明ü实体,或者将它们替换为十六进制或十进制等效值,在这种情况下我猜 ü :

<!DOCTYPE definition [
<!ENTITY uuml "&#220;">
]>

更新
如果您有更多特殊字符,请使用我们的 Apache commons lang 的 friend StringEscapeUtils.unescapeXML

Full example here

关于java - 实体 "uuml"已被引用,但未声明 - XMLStreamException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31559753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com