2014-08-29 85 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