2010-08-10 7 views
3

XML 파서를 문자열 (예 : 스트립 태그)으로 전달하는 형식으로 XML 문서를 인코딩해야합니다. 그런 다음 다시 디코딩해야하며 Android에서이 작업을 수행해야합니다. 내가 찾고있는 Android API의 라이브러리/클래스는 무엇입니까?Android에서 XML을 인코딩하는 방법은 무엇입니까?

감사

+0

그것은 당신이 실제로있어 것 같은 소리 찾고자하는 것은 _escape_ XML입니다. 즉, 해당 XML 엔터티에 대해 모든 XML 특수 문자를 대체하십시오. 그게 맞습니까? –

+0

네, 맞습니다. 인스턴트 java.net에서 URLEncoder 사용하여 (이 질문을 작성한 후). 거기에 어떤 문제가 있습니까? – MalcomTucker

답변

2

나는 잘 작동하는 것 같다 URLEncoder/URLDecoder를 사용하여 끝났다.

String encoded = URLEncoder.encode(xml); 
0

일반적인 Java XML Parser 길을 가야하는 것입니다.

당신이 그것을 구축해야하는 경우 수동으로는 XmlSerializer

편집 사용할 수 있습니다

Here는 안드로이드에 XML을 사용하는 방법에 대한 기사입니다, 그러나 그것은 또한 쓰기를 위해

를 XmlSerializer를 사용
+0

죄송합니다, 아마도 명확하지 않았을 것입니다. 이미 파서가 있습니다. 인코더를 찾고 있습니다. 나는 단지 '<'를 <으로 돌리고 싶다. – MalcomTucker

+0

미안하지만, 나는 오해하고있다. –

4

XmlSerializer은 아마도 원하는 것일 것입니다. 이것을 사용하여 "외부"XML 문서를 작성하십시오. text(...) method에 XML 문자열을 그대로 둘 수 있으며 이스케이프 처리를 수행합니다. DOM 트리를 빌드하고 XML로 덤프하려는 경우 setTextContent을 사용하여 DOM API에서 동일한 종류의 작업을 수행 할 수 있습니다. 알고있는 것처럼 모든 XML 파서는 텍스트를 요청할 때 엔티티 참조를 제대로 디코딩합니다.

자신 만의 XML 작성 코드를 작성하려면 Apache commons-lang 라이브러리를 프로젝트에 넣은 다음 StringEscapeUtils class을 시도해보십시오. 나는 안드로이드 기본 API에서 실제 XML을 구축하지 않고 엔티티 대체를 수행하는 것에 대해서는 전혀 알지 못한다.

예를 들어,이 시도 :

XmlSerializer xs = Xml.newSerializer(); 
StringWriter sw = new StringWriter(); 
xs.setOutput(sw); 
xs.startDocument(null, null); 
xs.startTag(null, "foo"); 
xs.text("<bar>this is some complete XML document you had around before</bar>"); 
xs.endTag(null, "foo"); 
xs.endDocument(); 
Log.v("XMLTest", "Generated XML = " + sw.toString()); 
+0

이것은 정확하게 내가 필요한 것입니다. 제 의견으로는이 질문에 대한 올바른 대답입니다. – tdn120

0

이 질문은 내가이 문제에 대한 해결책을 검색 한 최초의 결과 중 하나입니다, 그래서 여기에 대답

Html.fromHtml (문자열)

관련 문제