私はこのコンテンツをXMLで持っています:
<place>
<placeName>!@#$%&*?/_"'()-+;</placeName>
</place>
ページソースを表示すると正しいです
<place>
<placeName>!@#$%&*?/_"'()-+;</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;
}