簡體   English   中英

org.xml.sax.SAXParseException日語字符。 元素的內容必須包含格式正確的字符數據或標記

[英]org.xml.sax.SAXParseException for Japanese character. The content of elements must consist of well-formed character data or markup

如果HTML具有以下日語字符,則在Java程序中獲取以下錯誤。

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

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

錯誤:

    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

問題在於Tidy解析器的輸出編碼。

以前,Tidy解析器使用輸入編碼作為UTF-8讀取HTML,並使用相同的UTF-8編碼輸出。 但是org.xml。*渲染器無法解析某些UTF-8字符。 因此,存在解析異常。

現在,將Tidy的輸出編碼設置為ASCII之后 ,它將非ASCII字符轉換為實體(字符實體引用),因此可以通過XML渲染器正確解析。

tidy.setInputEncoding("UTF-8");
tidy.setOutputEncoding("ASCII");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM