JAVA element.getElementsByTagName Ограничивает Верхним уровнем

Eclipse IDE

, Приводящий Smalltalk как IDE к массам;)

20
задан user152090 6 August 2009 в 21:15
поделиться

3 ответа

Вы можете использовать XPath :

XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
NodeList links = (NodeList) xpath.evaluate("rootNode/link", element,
    XPathConstants.NODESET);
13
ответ дан 30 November 2019 в 00:43
поделиться

Мне тоже не удалось найти никаких методов для этого, поэтому я написал эту вспомогательную функцию,

 public static List<Element> getChildrenByTagName(Element parent, String name) {
    List<Element> nodeList = new ArrayList<Element>();
    for (Node child = parent.getFirstChild(); child != null; child = child.getNextSibling()) {
      if (child.getNodeType() == Node.ELEMENT_NODE && 
          name.equals(child.getNodeName())) {
        nodeList.add((Element) child);
      }
    }

    return nodeList;
  }
11
ответ дан 30 November 2019 в 00:43
поделиться

Если вы можете использовать JDOM вместо этого, вы можете сделать это:

element.getChildren("link");

В стандартном Dom самое близкое, что вы можете получить, это перебрать список дочерних узлов (вызывая getChildNodes () и проверяя каждый элемент (i) списка узлов, выбирая узлы с совпадающим именем.

3
ответ дан 30 November 2019 в 00:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: