1

在我的软件中,我收到一个 xml 文件,其中包含一些 HTML 实体,例如 & amp; 管他呢。我成功地解码了 xml 但不是 HTML 实体。当遇到一个 html 实体时,字符串会被切断......有人可以帮忙吗?我实际上有这样的代码来解码 xml...

            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
   DocumentBuilder builder = factory.newDocumentBuilder();
InputStream inputStream = entity.getContent();
Document dom = builder.parse(inputStream);
   inputStream.close();


   Element racine = dom.getDocumentElement();
   NodeList nodeLst=racine.getElementsByTagName("product");

有谁知道我如何做同样的工作,将 xml 解码为 dom 对象并解码 HTML 实体?

实际上我的 dom 对象是不正确的,因为它包含一些由于 HTML 实体而被剪切的字符串......我该怎么办?

4

3 回答 3

1

我有两种方法可以建议:

  1. 停用验证:factory.setValidating(false);

  2. 将 XHTML DTD 标记添加到 XML 流中,紧跟在<?xml ...>标记之后。

    <?xml version="1.0"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional. dtd">

于 2010-11-09T12:29:12.923 回答
1

我认为这是因为它将"'"撇号检测为字符串的结尾。我已经建立了一个解决方案。

String stringDatosEntrada = new Scanner(urlConnection.getInputStream()).useDelimiter("\\A").next().replaceAll("&amp;#39;","\'").replaceAll("&#39;","\'");

InputStream is = new ByteArrayInputStream(stringDatosEntrada.getBytes());
Document dom = builder.parse(inputStream)
于 2011-11-08T13:40:45.237 回答
0

您可以尝试使用 androids Html 标签编辑器。它应该做你想做的事,它不能识别所有的 HTML,但它似乎可以转换字符串:

    Html.fromHtml(inputstream)

这是一个简单的例子:

    TextView tv = (TextView) findViewById(R.id.tv);
    String s = "<b>This is</b> my first <u>HTML String</u> &amp; it works well!";
    tv.setText(Html.fromHtml(s));

这是输出:

于 2010-11-09T09:41:34.517 回答