Вы можете использовать jOOX, а затем написать
List<Element> elements = $(doc).find("b").children().get();
Или с DOM:
// Beware, this list also contains the blank text nodes around the <c/> elements,
// if your document is formatted.
NodeList list = doc.getElementsByTagName("b").item(0).getChildNodes();
ОБНОВЛЕНИЕ: Если вы хотите продолжить перемещение вашего документа DOM (т. получить дочерние узлы "c"
, как вы упоминаете в комментариях, то я очень рекомендую jOOX:
// This will find all "c" elements, and then return all children thereof
$(doc).find("c").children();
// This will return "d", "f", "d", "f", "d", "f":
List<String> tags = $(doc).find("c").children().tags();
// This will return "1", "2", "2, "2", "v", "d":
List<String> texts = $(doc).find("c").children().texts();
Проделав то же самое с DOM будет довольно громоздким:
List<Element> elements = new ArrayList<Element>();
List<String> tags = new ArrayList<String>();
List<String> texts = new ArrayList<String>();
NodeList c = doc.getElementsByTagName("c");
for (int i = 0; i < c.getLength(); i++) {
if (c.item(i) instanceof Element) {
NodeList children = c.item(i).getChildNodes();
for (int j = 0; j < children.getLength(); j++) {
if (children.item(j) instanceof Element) {
elements.add((Element) children.item(j));
tags.add(((Element) children.item(j)).getTagName());
texts.add(children.item(j).getTextContent());
}
}
}
}
UPDATE 2 (пожалуйста, более конкретный с будущими вопросами ...): с помощью XPath, сделайте следующее:
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression expression = xpath.compile("//c/*");
NodeList nodes = (NodeList) expression.evaluate(
document.getDocumentElement(), XPathConstants.NODESET);
возможный дубликат [запроса Java Xpath] (http://stackoverflow.com/questions/9109428/java-xpath-query) –