文档 - 如何通过名称获取标记的值?

时间:2011-09-20 19:54:53

标签: java xml dom

我正在使用Java的DOM解析器来解析XML文件。

假设我有以下XML

<?xml version="1.0"?>

<config>
    <dotcms>
        <endPoint>ip</endPoint>
    </dotcms>
</config>

</xml>

我喜欢获得'endPoint'的价值。我可以使用以下代码片段完成此操作。 (假设我已经用DocumentBuilder解析了它)

NodeList nodeList = this.doc.getElementByTagName("dotcms");
Node nValue = (Node) nodeList.item(0);
return nValue.getNodeValue();

是否可以通过字段名称获取字段值?像....

Node nValue = nodeList.getByName("endPoint")这样的事情......?

2 个答案:

答案 0 :(得分:5)

您应该使用XPath来完成这些任务:

//endPoint/text()

或:

/config/dotcms/endPoint/text()

当然,Java有一个内置的support用于XPath:

XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression expr = xpath.compile("//endPoint/text()");
Object value = expr.evaluate(doc, XPathConstants.STRING);

答案 1 :(得分:0)

你也可以使用jOOX,一个像jquery这样的DOM包装器来编写更少的代码:

// Using css-style selectors
String text1 = $(document).find("endPoint").text();

// Using XPath
String text2 = $(document).xpath("//endPoint").text();