空白が%20で置き換えたい空白があるxml URLファイルがあります。これを行う方法????
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
/** Send URL to parse XML Tags */
URL sourceUrl = new URL(
"http://www.arteonline.mobi/iphone/output.php?gallery=MALBA%20-%20MUSEO%20DE%20ARTE%20LATINOAMERICANO%20DE%20BUENOS%20AIRES");
XMLHandlerartistspace myXMLHandler = new XMLHandlerartistspace();
xr.setContentHandler(myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));
これを試して:
String temp = http://www.arteonline.mobi/iphone/output.php?gallery=MALBA%20-%20MUSEO%20DE%20ARTE%20LATINOAMERICANO%20DE%20BUENOS%20AIRES
temp = temp.replaceAll(" ", "%20");
URL sourceUrl = new URL(temp);
URLを作成するときは、 RLEncoder を使用してパラメーターをエンコードする必要があります。
StringBuilder query = new StringBuilder();
query.append("gallery=");
query.append(URLEncoder.encode(value, "UTF-8"));
StringまたはJava.net.URLにURL全体が既にある場合は、各パラメーター値をURLEncodingしながらクエリ部分を取得して再構築できます。
sudocodeの応答に1つだけ追加します。
「スペースが+に変換される」問題を回避するために、URLEncoder.encodeの代わりにAndroid.net.Uri.encodeを使用します。次に、String.replaceAll()とそのよりエレガントな:)を取り除きます
StringBuilder query = new StringBuilder();
query.append("gallery=");
query.append(Android.net.Uri.encode(value, "UTF-8"));
白だけでなく、すべてのスペースを置き換えたいと思います。
最も簡単な方法は
"url_with_spaces".replaceAll(" ", "%20);
ただし、URL内の他の文字も考慮する必要があります。 JavaでHTMLをエスケープするための推奨方法 を参照してください
String s = "my string";
s=s.replaceAll(" ", "%20");
URIUtil.encodePath
APIからのメソッドorg.Apache.commons.httpclient.util.URIUtil
。
これはあなたのためのトリックを行う必要があります。
スペース文字を%20
値ではなく+
値としてエンコードする必要がある場合は、次を使用します。
String encodedString = URLEncoder.encode(originalString,"UTF-8").replaceAll("\\+", "%20")