Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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上获取根节点属性_Java_Xml_Eclipse - Fatal编程技术网

如何在java上获取根节点属性

如何在java上获取根节点属性,java,xml,eclipse,Java,Xml,Eclipse,我有一个如下所示的xml文件。我想获取pharmacies节点的纬度和经度属性。我可以获取chilnodes属性,但无法获取根节点属性。我是java和xml新手。我找不到解决办法怎么办 <pharmacies Acc="4" latitude="36.8673380" longitude="30.6346640" address="Ayujkila"> <pharmacy name="sadde" owner="" address="dedes" distanc

我有一个如下所示的xml文件。我想获取pharmacies节点的纬度和经度属性。我可以获取chilnodes属性,但无法获取根节点属性。我是java和xml新手。我找不到解决办法怎么办

<pharmacies Acc="4" latitude="36.8673380" longitude="30.6346640" address="Ayujkila">
        <pharmacy name="sadde" owner="" address="dedes" distance="327.000555668" phone="342343" lat="36.8644" long="30.6345" accuracy="8"/>
        <pharmacy name="Sun " owner="" address="degerse" distance="364.450016586" phone="45623" lat="36.8641" long="30.6353" accuracy="8"/>
        <pharmacy name="lara" owner="" address="freacde" distance="927.262190129" phone="564667" lat="36.8731" long="30.6422" accuracy="8"
    <end/>
    </pharmacies>


如果需要获取根节点pharmacies的属性,则需要使用pharmacies而不是pharmacy。并使用getAttributes方法。您可以在该网站上看到许多示例。
doc.getDocumentElement()
将返回根元素,您可以像对任何其他元素一样对其调用
getAttribute(attrName)
元素本身可以使用

Element pharmacies = doc.getDocumentElement();
您可以从中获取属性。

请尝试以下操作:

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document doc = db.parse(new ByteArrayInputStream(xml.getBytes("UTF-8")));
    doc.getDocumentElement().normalize();
    System.out.println(doc.getChildNodes().getLength());
    Node item = doc.getChildNodes().item(0);
    System.out.println(item.getNodeName());
    Node lat = item.getAttributes().getNamedItem("latitude");
    String s = lat.getNodeValue();
    System.out.println(s.equals("36.8673380")); // Value of /pharmacies[@latitude]/value()

请为我尝试它的工作,Res是您的最终字符串:

doc = b.parse(new ByteArrayInputStream(result.getBytes("UTF-8")));

    Node rootNode=doc.getDocumentElement();

    res = rootNode.getNodeName().toString();
本身就是一个元素,可以使用

Element pharmacies = doc.getDocumentElement();
Element pharmacies=doc.getDocumentElement()

现在,元素的
参考变量
包含
元素下的所有属性。我们可以使用属性名称逐个获得所需的属性,如:

pharmacies.getAttribute("latitude");   // Will give 36.8673380
pharmacies.getAttribute("longitude");  // Will give 30.6346640

是的,它就像斯卡夫曼的答案一样有效。非常感谢你帮了我的忙!!亲爱的@user3156,这将只提供rootNode的名称,这里的要求是获取rootNode名为“纬度”和“经度”的属性:)