0

私はこのコンテンツをXMLで持っています:

<place>
   <placeName>!@#$%&*?/_"'()-+;</placeName>
</place>

ページソースを表示すると正しいです

<place>
    <placeName>!@#$%&amp;*?/_&quot;'()-+;</placeName>
</place

org.w3c.dom.Document、org.w3c.dom.Element、...を使用して、コンテンツ「placeName」を取得します。問題は、DOMライブラリがエスケープされた特殊文字を削除することです。Android logcatに「!@#$%」と表示されます。なんで?それを修正する方法は?

これは私のコードの一部です。Node::getNodeValueを使用して上記のXMLから値を取得します。

    public static Document getDocument(final String xml) {
        Document doc = null;
        final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            try {
            final DocumentBuilder db = dbf.newDocumentBuilder();
            final InputSource is = new InputSource();
            is.setCharacterStream(new StringReader(xml));
            doc = db.parse(is);

            } catch (final ParserConfigurationException e) {
                System.out.println("XML parse error: " + e.getMessage());
                return null;
            } catch (final SAXException e) {
                System.out.println("Wrong XML file structure: " + e.getMessage());
                return null;
            } catch (final IOException e) {
                System.out.println("I/O exeption: " + e.getMessage());
                return null;
            }
            return doc;
    }

    private static String request() {
        String line = null;
        try {
            final DefaultHttpClient httpClient = new DefaultHttpClient();
            final HttpGet httpGet = new HttpGet("http://api-url.com");
            final HttpResponse httpResponse = httpClient.execute(httpGet);
            final HttpEntity httpEntity = httpResponse.getEntity();
            line = EntityUtils.toString(httpEntity);

        } catch (final UnsupportedEncodingException e) {
            line = "<results status=\"error\"><msg>Can't connect to server</msg></results>";
        } catch (final MalformedURLException e) {
            line = "<results status=\"error\"><msg>Can't connect to server</msg></results>";
        } catch (final IOException e) {
            line = "<results status=\"error\"><msg>Can't connect to server</msg></results>";
        }
        return line;
    }
4

1 に答える 1

1

文字列からドキュメントを取得するときにこれを追加します

  dbf.setCoalescing(true); 

ここで、dbfは

 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
于 2012-07-30T06:10:47.770 に答える