如何从xml文件中获取属性?

我的XML文件是这样的:如何从xml文件中获取属性?

<?xml version="1.0" encoding="UTF-8"?> 

<!DOCTYPE pointList SYSTEM "point.dtd">

<pointList>

<point unit="mm">

<x>2</x>

<y>3</y>

</point>

<point unit="cm">

<x>9</x>

<y>3</y>

</point>

<point unit="px">

<x>4</x>

<y>7</y>

</point>

</pointList>

当我尝试获取标记点的属性:

import java.io.File; 

import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.NamedNodeMap;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import org.xml.sax.SAXException;

public class TryXml {

public static void main (String [] args) {

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = null;

Document doc = null;

try {

builder = factory.newDocumentBuilder();

}

catch (ParserConfigurationException e){

System.out.println(e.getMessage());

}

File f = new File("p1.xml");

try {

doc=builder.parse(f);

}

catch (SAXException e){

e.printStackTrace();

}

catch (IOException e){

e.printStackTrace();

}

Element root = doc.getDocumentElement();

System.out.println(root.getTagName());

System.out.println("****************");

NodeList nList = root.getChildNodes();

for (int i=0;i<nList.getLength();i++) {

if(nList.item(i) instanceof Element)

System.out.println(nList.item(i).getAttributes());

}

}

}

我得到的是类似地址:

[email protected] 

[email protected]

[email protected]

能任何人都会给我一个关于如何获得点和其他内部标签的属性的提示?

回答:

你可以用下面的更换你的println:

System.out.println(((Element) nList.item(i)).getAttribute("unit")); 

这应该给你当前元素的“单位”属性。

回答:

使用,

“元素根= doc.getElementByTagName(” pointList “);”

代替,

“元素根= doc.getDocumentElement();”

回答:

Element.getAttributes()将列出该Element中的所有属性。如果您事先知道属性的名称并只想获取其值,请改用Element.getAttribute(String)

如果您需要获取子元素,请使用Element.getChildNodes()。要获得Element或更具体地说Node中的文字,请使用getNodeValue()

例如:

 NodeList nList = root.getChildNodes(); 

String out = "";

for (int i=0;i<nList.getLength();i++) {

// Assuming all first-level tags are <point>

Element point = (Element) nList.item(i);

String unit = point.getAttribute("unit");

out += "point ";

for (int y=0;y<point.getChildNodes().getLength();y++){

Node child = point.getChildNodes().item(y);

// String nodeName = child.getNodeName();

String nodeValue = child.getNodeValue();

out += nodeValue;

}

out += unit;

out += ", ";

}

将输出point 23mm, point 93cm, point 47px,

回答:

这篇文章getting xml attribute with java做你想要实现的。它教导常规的XML解析和操作。它也检索属性。

祝你好运!

以上是 如何从xml文件中获取属性? 的全部内容, 来源链接: utcz.com/qa/262299.html

回到顶部