2014-08-29 3 views
0

Я ищу, чтобы получить только имя тега, а не его детей.java Convert Element to string

У меня есть XML, как это:

<RESPONSE> 
    <RESULT>            !--TableName 
     <ADDRESS1>123 Main Street</ADDRESS1>    !--ColumnName 
     <ZIP>12345</ZIP>         !--ColumnName 
    </RESULT> 
    <RESULT>            !--TableName 
     <ADDRESS1>245 Elm Street</ADDRESS1>     !--ColumnName 
     <ZIP>45678</ZIP>         !--ColumnName 
    </RESULT> 
    <VIN>             !--TableName 
     <VIN_NUM>1K45678RTW23</VIN>       !--ColumnName 
    </VIN> 
    …. 
</REPSONSE> 

Я пытаюсь динамически сохранить XML в это соответствующие имена таблиц и столбцов. Итак, я хочу извлечь все, что есть в первом элементе, и назначить его переменной имен таблиц, а затем это дети в виде столбцов.

Вот что я делал до сих пор:

private void extractToTableSet(Document doc, int appseqno) throws Exception 
{ 
    NodeList responseList = doc.getElementsByTagName("RESPONSE"); 
    for (int i = 0; i < responseList.getLength(); i++) { 
     Node currentNode = responseList.item(i); 
     if (currentNode.getNodeType() == Node.ELEMENT_NODE) { 
      Element tableElement = (Element) responseList.item(i); 
      if (tableElement != null && tableElement.hasChildNodes()) { 
       for (columnNode = tableElement.getFirstChild(); columnNode != null; columnNode = columnNode.getNextSibling()) { 
        if (columnNode.getNodeType() == Node.TEXT_NODE) { 
         columnName = columnNode.getNodeValue; 
        } 
       } 
      } 
     } 
    } 
} 

Таким образом, я только в состоянии получить значения в дочерних узлах. Есть ли способ получить имя тегов элемента? Например, я хочу извлечь значение RESULT из объекта Document.

+2

проверка element.getTagName: http://www.w3.org/2003/01/dom2-javadoc/org/w3c /dom/Element.html#getTagName__ – user3487063

+0

Вы пытаетесь получить тэг? – user3487063

+0

да, я пытаюсь получить тэг – roymustang86

ответ

1

В DOM имя элемента извлекается с использованием Node.getNodeName().

Пример:

if(node.getNodeType() == Node.ELEMENT_NODE) { 
    String elementName = node.getNodeName(); 
    ... 
} 
+0

Есть ли разница в отношении getTagName? – roymustang86

+0

Нет, это точно так же для узлов элементов. 'getNodeName' также применяется к элементам, атрибутам и другим типам узлов. – manouti

1

Чтобы получить имя тега элемента:

Element tableElement = (Element) responseList.item(i); 
    String tagname = tableElement .getTagName(); 
+0

Не могли бы вы добавить какое-то объяснение, например * почему * это работает, и что OP сделал это неправильно? – amphetamachine