Как проверить значение элемента CDATA, используя Dom4j? - PullRequest
0 голосов
/ 10 ноября 2011

Кто-нибудь знает, как узнать, содержит ли элемент <![CDATA[ text ]]> или нет?Я ищу через API dom4j и Jaxen и не могу найти, как это сделать ... Если я получаю текст, то обертка cdata обрезается.

Ответы [ 3 ]

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

Метод:

Node.asXML()

возвращает весь элемент с неизменным значением.

Итак, если у вас есть:

<nodes>
  <node><![CDATA[value]]></node>
</nodes>

Вызов текстовых методов вернет «значение», но вызов «asXML ()» вернет:

<node><![CDATA[value]]></node>

Оттуда, я думаю, вы можете выполнить поиск строки по тегу CDATA.

0 голосов
/ 10 ноября 2011

Технически вы все еще можете сделать это.


public boolean isCDATA(org.dom4j.Node node) {
  for (org.dom4j.Node n : node.content()) {
    if (org.w3c.dom.Node.CDATA_SECTION_NODE == n.getNodeType()) {
      return true;
    }
  }
  return false;
}
0 голосов
/ 10 ноября 2011

http://dom4j.sourceforge.net/dom4j-1.6.1/apidocs/org/dom4j/Node.html#getNodeType%28%29

это будет работать?

public short getNodeType()

Возвращает код в соответствии с типом узла. Это значительно упрощает полиморфную обработку узлов, так как оператор switch можно использовать вместо нескольких операторов if (instanceof).

Возвращает: D3-совместимый код W3C для типа узла, такого как ELEMENT_NODE или ATTRIBUTE_NODE

...