0

文字列を解析して org.w3c.dom.Element にすると、次の例外が発生します。

org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 245; Invalid byte 3 of 3-byte UTF-8 sequence.

文字列を要素に変換するために使用したコードは次のとおりです。

public Element convertStringToDoc(String xmlString) throws Exception{
    org.w3c.dom.Document doc;
    try {
        java.io.InputStream sbis = new java.io.StringBufferInputStream(xmlString);
        javax.xml.parsers.DocumentBuilderFactory b = javax.xml.parsers.DocumentBuilderFactory.newInstance();
        b.setNamespaceAware(false);
        doc = null;
        javax.xml.parsers.DocumentBuilder db = null;
        db = b.newDocumentBuilder();
        doc = db.parse(sbis);
        org.w3c.dom.Element e = doc.getDocumentElement();
        return e;
    } catch (Exception e1) {
        throw e1;

} }

私の入力文字列は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<a id="ctl00_RSContent1_ResultsList_ctl00_ProductTitleLink" href="../Product/the_western_european_wear_tear_parts_market_201115?productid=TD00033-006">The Western European Wear &amp; Tear Parts Market, 2011–15</a>
4

1 に答える 1

1

私の意見では、Java String クラスは UTF-8 でエンコードされていません。"–" シーケンスには、UTF-8 では許可されていないバイト コーディングが Java 文字列 Unicode に含まれているようです。このようにコードを変更してください...

...
byte[] utf8Bytes=xmlString.getBytes("UTF-8");
java.io.InputStream sbis = new java.io.ByteArrayInputStream(utf8Bytes);
javax.xml.parsers.DocumentBuilderFactory b = javax.xml.parsers.DocumentBuilderFactory.newInstance();
...
于 2012-09-07T06:49:25.170 に答える