среда, 13 марта 2013 г.

Функция, которая возвращает первый элемент типа Node.ELEMENT_NODE из SOAPBody

Возвращает первый элемент типа Node.ELEMENT из SOAPBody.
Необходима в случае отформатированного документа.
Тогда содержимое body представляет собой массив из трех Node:
Первая и последняя ноды представляют собой Node.TEXT_NODE с содержимым = "\n" или чем-то подобным (табуляции, переводы строки и т.п.).
Для получения значимого содержимого перебираем массив через body.getChildElements() и находим Node с типом Node.ELEMENT_NODE

/**
  * Возвращает первый элемент из SOAPBody
  * Необходимо в случае отформатированного документа, когда body.getFirstChild() == "\n"
  * @param body
  * @return
  */
 public Node getFirstChildElement(SOAPBody body) {
  @SuppressWarnings("unchecked")
  Iterator nodes = body.getChildElements();
  while (nodes.hasNext()) {
   Node currentNode = nodes.next();
   if (currentNode.getNodeType() == Node.ELEMENT_NODE) {
    return currentNode;
   }
  }
  return null;
 }

Комментариев нет: