Как разобрать сложный SOAP-ответ в Android - PullRequest
2 голосов
/ 12 ноября 2010

Уже два дня я пытаюсь использовать мыльную службу WCF (.NET) и сериализовать ее ответ безуспешно.Я получаю правильный ответ (мне пришлось поместить его на pastebin: Пример ответа SOAP ), но KSOAP2 не может правильно обрабатывать наборы данных .NET.Я уже обращался к различным статьям по этой конкретной проблеме, но ни у одной из них нет .NET Dataset для обработки.Основная статья, которая давала руководство, была статья IBM "Работа с XML на Android"

Я попытался выполнить следующие шаги, чтобы проанализировать мои данные без успеха:

  1. Разбор с SAX (android) -> Кажется, не работать с этим сложным документом из-за различных пространств имен.
  2. с DOM Object (android) -> NullPointerExeption (dooh!)
  3. с Digester (dom4j) -> NullPointerException (arggh!)
  4. метод, предложенный helloandroid.com «Использование ksoap2 для Android и анализ выходных данных»

Некоторые вопросы: - Возвращенный ответобычный XML, но на самом деле он включает набор данных .NET.У кого-нибудь был успех, чтобы разобрать данные из такого ответа?- Есть ли способ заставить KSOAP2 не пытаться анализировать данные?Он возвращает мусорный объект SoapObject, который невозможно прочитать.Я хотел бы только содержание тела SOAP.Есть ли способ перехватить это?- Есть ли у вас другие намеки?

Ответы [ 4 ]

2 голосов
/ 16 декабря 2010

С помощью ksoap2 вы можете установить для отладки конверта значение true, а затем получить дамп ответа, который будет содержать полный xml.

Однако, что заставляет вас думать, что возвращенный объект SoapObject не читается.Проверьте это в отладчике, и вы обнаружите, что все есть, и вы можете просто разобрать его, используя getProperty ("propname") и getAttribute ("attribute), которые, в свою очередь, являются либо SoapObjects снова, если они вложенные, либо содержат реальные значения, еслиэто листовые узлы.

Проверьте некоторые ссылки в вики на http://code.google.com/p/ksoap2-android/

1 голос
/ 04 августа 2011

Одним из моих решений было: http://vtd -xml.sourceforge.net /

Я надеюсь, что кто-то найдет что-то более подходящее.

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

До сих пор я использовал DOM и SAX для анализа XML-документов.У DOM было несколько проблем с Android, и мне пришлось устранить некоторые ошибки в API.SAX кажется лучше (и стройнее, если вы только читаете).Я не использовал ksoap, но сделал все вручную.Хотя я не уверен, где проблема с этим .NET, я не вижу проблемы с использованием SAX или DOM.Можете ли вы прокомментировать, почему вы думаете, SAX не будет работать из-за пространств имен?A.

0 голосов
/ 18 августа 2011

У меня такая же проблема.Сначала я использовал vtd-xml.Работало без проблем, но немного медленно.Теперь я переключился на стандарт Java SAX (не на реализацию Android SAX), и он работает нормально.

...