错误:org.apache.xerces.dom.DeferredTextImpl无法强制转换为org.w3c.dom.Element

ron*_*ron 7 java xml dom

XML:

<nativeInformation>
       <detail id="natural:fieldFormat">A</detail>
</nativeInformation>
Run Code Online (Sandbox Code Playgroud)

我想获得"id"值.但不断收到此错误:org.apache.xerces.dom.DeferredTextImpl无法强制转换为org.w3c.dom.Element

我的代码:

  for (int i = 0; i < nodeList.getLength(); i++) {
      String s;
      Node n = nodeList.item(i);         
      Attr attrName = ((Element) n).getAttributeNode("id");          
      if (attrName.getValue()!=null) {
           s = attrName.getValue();
           System.out.println(s);              
      } 
     } 
Run Code Online (Sandbox Code Playgroud)

如果我写:System.out.println("父节点是"+ n.getParentNode()); 在for循环里面会给我,[detail:null]

任何帮助将非常感激.

Nar*_*ren 14

在向下转换为Element之前,请检查一下

提示: - 只需要检查Nodeis是否为Element.以下是将Node转换为Element的方法.

   NodeList nodes = root.getChildNodes();
for (int i = 0; i < nodes.getLength(); i++) {
if(nodes.item(i).getNodeType() == Node.ELEMENT_NODE){
    Element element = (Element) nodes.item(i);
         ..............................................
    }
]
Run Code Online (Sandbox Code Playgroud)

  • 如果不是元素节点类型如何处理 (4认同)