如何在Android上对XML进行编码?

3

我需要将一个XML文档编码成一个字符串格式,以便通过XML解析器(即去掉标签)进行传递。然后我需要再次解码它,并且我需要在Android上完成这个过程。我需要查找的是Android API中的哪个库/类?

谢谢


听起来你实际上想要做的是_转义_ XML;也就是说,将所有的 XML 特殊字符替换为它们各自对应的 XML 实体。是这样吗? - Walter Mundt
是的,没错。我目前正在使用java.net中的URLEncoder(在写这个问题之后)。这样做有什么问题吗? - MalcomTucker
4个回答

4
您可能需要使用XmlSerializer。使用它来构建“外部”XML文档;您可以将一个完整的XML字符串传递给它的text(...)方法,它会为您进行转义。如果您真的想要构建DOM树,然后将其转储为XML,您可以使用DOM API执行相同类型的操作,通过使用setTextContent方法。
如您所知,任何XML解析器在请求返回文本时都会正确解码实体引用。
如果您真的想编写自己的XML构建代码,可以尝试将Apache commons-lang库引入您的项目中,以使用其中的StringEscapeUtils类。我不知道有什么东西可以只进行实体替换而不构建基础Android 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());

这正是我所需要的,而且在我看来,这是对这个问题的正确答案。 - tdn120

2
我最终使用了URLEncoder/URLDecoder,这似乎很好地工作了。
String encoded = URLEncoder.encode(xml);

0

这个问题是我在搜索解决方案时的首要结果,所以我在这里回答

Html.fromHtml(String)


0

通常情况下,Java XML解析器是首选。

如果必须手动构建,则可以使用XmlSerializer

编辑:

这里有一篇关于在Android上处理xml的文章,但它也使用了XmlSerializer进行编写。


抱歉,也许我表达不够清楚,我已经有一个解析器了,我正在寻找编码器。我只想将“<”转换为“<”等等... - MalcomTucker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接