Android, декодирование HTML в файл XML - PullRequest
1 голос
/ 09 ноября 2010

В моем программном обеспечении я получаю 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 ... что я могу сделать?

Ответы [ 3 ]

1 голос
/ 09 ноября 2010

У меня есть два подхода:

  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">

1 голос
/ 08 ноября 2011

Я думаю, что это так, потому что он определяет "'" апостроф как финал строки. Я нашел решение.

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)
0 голосов
/ 09 ноября 2010

Вы можете попробовать использовать 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));

Вот вывод:

image

...