2014-08-29 146 views
0

我期待只獲取標記名稱,而不是它的子項。java將元素轉換爲字符串

我有一個這樣的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; 
        } 
       } 
      } 
     } 
    } 
} 

這樣,我只能夠得到的子節點的值。有沒有辦法獲得Element標籤的名稱?就像我想從Document對象中提取值RESULT一樣。

+2

檢查element.getTagName:http://www.w3.org/2003/01/dom2-javadoc/org/w3c /dom/Element.html#getTagName__ – user3487063 2014-08-29 19:37:34

+0

你想要檢索標記名嗎? – user3487063 2014-08-29 19:39:13

+0

是的,我試圖檢索標記名 – roymustang86 2014-08-29 19:47:58

回答

1

在DOM中,使用Node.getNodeName()檢索元素名稱。

例子:

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

與getTagName有區別嗎? – roymustang86 2014-08-29 20:23:17

+0

不,它與元素節點完全相同。 'getNodeName'也適用於元素,屬性和其他節點類型。 – manouti 2014-08-29 20:30:55

1

要獲得元素的標記名:

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

請問您可以添加一些解釋,如*爲什麼*這個工作,以及OP做錯了什麼? – amphetamachine 2014-08-29 20:44:09