2017-02-22 5 views
0

Я использую итерацию по всем узлам в XML-документе:Как напечатать ФАКТИЧЕСКУЮ TextContent в узле с использованием документа в Java

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory 
    .newInstance(); 
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); 
Document document = docBuilder.parse(new File(path)); //path is path to xml document 

NodeList nodeList = document.getElementsByTagName("*"); 
for (int i = 0; i < nodeList.getLength(); i++) { 
    Node node = nodeList.item(i); 
    if (node.getNodeType() == Node.ELEMENT_NODE) { 
     // do something with the current element 
     System.out.println(node.getNodeName() + ": " + node.getTextContent()); 
    } 
} 

Источник: Java: Most efficient method to iterate over all elements in a org.w3c.dom.Document?

И я хочу печати текста каждого узла.

Когда я вызываю node.getTextContent(), он возвращает мне строку всех дочерних элементов в этом узле.

Пример:

<chanel> 
    <car>opel</car> 
    <color>orange</color> 
</chanel> 

Выход:

chanel: opel 
     orange 
car: opel 
color: orange 

Но .. вещь does't Шанель есть текст Опеля и апельсин? Как печатать только текст в фактическом узле?

Как это:

Шанель: нулевой автомобиля: Opel цвета: оранжевый

Спасибо за любую помощь!

ответ

0

1 для каждого элемента => принимают дети

    the_node.getChildNodes() 

2 затем проверить, если тип Text

3 затем getTextContent()

другое решение: использование XPath

Смежные вопросы