我有一个像下面的xml文件。我想获得药房节点的纬度和经度属性。我可以获得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>
这是我的代码部分。我从url地址获取xml文件。
DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
NodeList nodeList =doc.getElementsByTagName("pharmacy");
for (int i = 0; i < nodeList.getLength(); i++){
Node node =nodeList.item(i);
Element fstElmnt = (Element) node;
NodeList pharmacyList = fstElmnt.getElementsByTagName("pharmacy");
Element pharmacyElement = (Element) pharmacyList.item(0);
Element pharmacyElement = (Element) pharmacyList.item(0);
HashMap<String,String>map=new HashMap<String,String>();
map.put("name", pharmacyElement.getAttribute("name"));
map.put("distance", pharmacyElement.getAttribute("phone"));
list.add(map);
latt.add(pharmacyElement.getAttribute("lat"));
....
答案 0 :(得分:27)
<pharmacies>
元素本身可以使用
Element pharmacies = doc.getDocumentElement();
您可以从中获取属性。
答案 1 :(得分:6)
doc.getDocumentElement()
将返回根元素,您可以像调用任何其他元素一样调用getAttribute( attrName )
。
答案 2 :(得分:3)
尝试以下方法:
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()
答案 3 :(得分:0)
如果您需要获取根节点药房的属性,则需要使用药房而不是药房。而是使用getAttributes方法。您可以在此网站上看到很多示例。 http://java.sun.com/developer/codesamples/xml.html#dom
答案 4 :(得分:0)
尝试它的工作对我而言,Res是你的最终字符串:
doc = b.parse(new ByteArrayInputStream(result.getBytes("UTF-8")));
Node rootNode=doc.getDocumentElement();
res = rootNode.getNodeName().toString();
答案 5 :(得分:0)
<pharmacies>
本身就是一个元素&amp;可以使用
Element pharmacies = doc.getDocumentElement();
现在,元素的pharmacies
引用变量包含<pharmacies>
元素下的所有属性。我们可以使用属性名称逐个获得所需的属性,如:
pharmacies.getAttribute("latitude"); // Will give 36.8673380
pharmacies.getAttribute("longitude"); // Will give 30.6346640