Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java的xml文件中获取子对象的属性?_Java_Xml - Fatal编程技术网

如何在java的xml文件中获取子对象的属性?

如何在java的xml文件中获取子对象的属性?,java,xml,Java,Xml,我用javascripts和java阅读xml文件,用javascripts我读得很好,但用java我发现很难,这是我xml文件的一部分: <Objects> <TemplateDef title="false" > <fields relType="0"> <TemplateField englishName="Login" > <fieldType relType="2"> <TemplateFieldType visib

我用javascripts和java阅读xml文件,用javascripts我读得很好,但用java我发现很难,这是我xml文件的一部分:

<Objects>
<TemplateDef title="false" >
<fields relType="0">
<TemplateField  englishName="Login" >
<fieldType relType="2">
<TemplateFieldType  visibleName="String" realType="String" />
</fieldType>
</TemplateField>
<TemplateDef title="false" >
<fields relType="0">
<TemplateField  englishName="Login1" >
<fieldType relType="2">
<TemplateFieldType  visibleName="int" realType="int" />
</fieldType>
</TemplateField>
</TemplateDef >
</Objects>

我想访问“visibleName”的属性,我可以通过以下代码在javascripts中实现:

var obj1 = xmlDoc.getElementsByTagName("TemplateDef");
                        objattr=obj1[1].getElementsByTagName("TemplateField");
                          for (var i = 0; i< objattr.length; i++) 
                          {
                              //alert(y[5].getAttribute('name'));
                              if(objattr[i].getAttribute('name')!==null&&objattr[i].childNodes[0].childNodes[0].getAttribute('visibleName')!==null)
                                  {
                                  }
                          }
var obj1=xmlDoc.getElementsByTagName(“TemplateDef”);
objattr=obj1[1].getElementsByTagName(“TemplateField”);
对于(变量i=0;i
但我试图用java编写相同的代码来访问属性“visiablename”,但失败了,我的java尝试:

            Element  nodeclass =(Element) nList.item(1);
                NodeList nList1 = nodeclass.getElementsByTagName("TemplateField");
                  for (int i = 0; i< nList1.getLength(); i++) 
                  {
                      Node tempnode = nList1.item(i);
                      if (tempnode.getNodeType() == Node.ELEMENT_NODE ) {

                            Element eElement = (Element) tempnode;
                            if(eElement.getAttribute("name")!=null && eElement.getFirstChild().getFirstChild().getAttribute("visibleName")!=null)
// here error because getAttribute not take parameter as string
                               {

                               }
                      }
Element节点类=(Element)nList.item(1);
NodeList nList1=nodeclass.getElementsByTagName(“TemplateField”);
对于(int i=0;i
这里的编译器错误 eElement.getFirstChild().getFirstChild().getAttribute(“visibleName”)!=null) //此处出现错误,因为getAttribute未将参数作为字符串


那么,有人能帮我用java编写代码吗?

尝试转换为元素:

Element e = (Element)eElement.getFirstChild().getFirstChild();
String visibleName = e.getAttribute("visibleName");

“getFirstChild”返回一个节点,您必须将其强制转换为“元素”才能访问“getAttribute”方法。谢谢,2分钟后我将接受您的回答