如何使用Java获取xml节点的属性值

我有一个看起来像这样的xml:

{ <xml><ep><source type="xml">...</source><source type="text">..</source></ep></xml>}

在这里,我想检索类型为属性的“源类型”的值。

我曾这样尝试过,但无法正常工作:

 DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();

try {

DocumentBuilder builder = domFactory.newDocumentBuilder();

Document dDoc = builder.parse("D:/workspace1/ereader/src/main/webapp/configurations/config.xml");

System.out.println(dDoc);

XPath xPath = XPathFactory.newInstance().newXPath();

Node node = (Node) xPath.evaluate("//xml/source/@type/text()", dDoc, XPathConstants.NODE);

System.out.println(node);

} catch (Exception e) {

e.printStackTrace();

我也尝试过这个:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = factory.newDocumentBuilder();

InputSource is = new InputSource(new StringReader("config.xml"));

Document doc = builder.parse(is);

NodeList nodeList = doc.getElementsByTagName("source");

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

Node node = nodeList.item(i);

if (node.hasAttributes()) {

Attr attr = (Attr) node.getAttributes().getNamedItem("type");

if (attr != null) {

String attribute= attr.getValue();

System.out.println("attribute: " + attribute);

}

}

}

请帮助我!!

在此先感谢Varsha。

回答:

由于您的问题较为笼统,请尝试使用Java中提供的XML解析器来实现。如果您特定于解析器,请在此处更新您尝试过的代码

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

<ep>

<source type="xml">TEST</source>

<source type="text"></source>

</ep>

DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = factory.newDocumentBuilder();

Document doc = builder.parse("uri to xmlfile");

XPathFactory xPathfactory = XPathFactory.newInstance();

XPath xpath = xPathfactory.newXPath();

XPathExpression expr = xpath.compile("//ep/source[@type]");

NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);

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

{

Node currentItem = nl.item(i);

String key = currentItem.getAttributes().getNamedItem("type").getNodeValue();

System.out.println(key);

}

以上是 如何使用Java获取xml节点的属性值 的全部内容, 来源链接: utcz.com/qa/427871.html

回到顶部