首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >日本人的org.xml.sax.SAXParseException。元素的内容必须由格式良好的字符数据或标记组成。

日本人的org.xml.sax.SAXParseException。元素的内容必须由格式良好的字符数据或标记组成。
EN

Stack Overflow用户
提问于 2018-04-12 07:57:47
回答 1查看 741关注 0票数 0

如果HTML具有以下日语字符,则在Java程序中获得以下错误。

代码语言:javascript
复制
ファミリーコンパクト 270ml ●植物成分使用●型番:コンパクト●容量(mL):270●しつこい油汚れをスッキリ落とします。

使用org.w3c.tidy.Tidy解析org.xhtmlrenderer.pdf.ITextRenderer,然后使用org.xhtmlrenderer.pdf.ITextRenderer生成PDF。

错误:

代码语言:javascript
复制
    ERROR:  'The content of elements must consist of well-formed character data or markup.'
Exception in thread "main" org.xhtmlrenderer.util.XRRuntimeException: Can't load the XML resource (using TRaX transformer). org.xml.sax.SAXParseException; lineNumber: 187; columnNumber: 65; The content of elements must consist of well-formed character data or markup.
    at org.xhtmlrenderer.resource.XMLResource$XMLResourceBuilder.createXMLResource(XMLResource.java:191)
    at org.xhtmlrenderer.resource.XMLResource.load(XMLResource.java:71)
    at org.xhtmlrenderer.swing.NaiveUserAgent.getXMLResource(NaiveUserAgent.java:211)
    at org.xhtmlrenderer.pdf.ITextRenderer.loadDocument(ITextRenderer.java:134)
    at org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:149)
    at me.preekmr.Main.convertHTMLToPDF(Main.java:66)
    at me.preekmr.Main.main(Main.java:27)
Caused by: javax.xml.transform.TransformerException: org.xml.sax.SAXParseException; lineNumber: 187; columnNumber: 65; The content of elements must consist of well-formed character data or markup.
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:740)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:343)
    at org.xhtmlrenderer.resource.XMLResource$XMLResourceBuilder.createXMLResource(XMLResource.java:189)
    ... 6 more
Caused by: org.xml.sax.SAXParseException; lineNumber: 187; columnNumber: 65; The content of elements must consist of well-formed character data or markup.
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1239)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:659)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:728)
    ... 8 more
EN

回答 1

Stack Overflow用户

发布于 2018-04-13 08:55:27

问题与Tidy解析器的输出编码有关.

以前,Tidy解析器使用输入编码作为UTF-8读取HTML,并使用相同的UTF-8编码进行输出。但是org.xml.*呈现程序无法解析一些UTF-8字符。因此出现了解析异常。

现在,在将Tidy的输出编码设置为ASCII之后,它将非ASCII字符转换为实体(字符实体引用),因此它可以被XML正确地解析。

代码语言:javascript
复制
tidy.setInputEncoding("UTF-8");
tidy.setOutputEncoding("ASCII");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49790997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档