Java 从Xpath获取属性

Java 从Xpath获取属性,java,xml,xpath,Java,Xml,Xpath,我需要一个方法,可以返回指定xpath中指定属性的值。因此,例如,如果我们有xpath=/root/foo/body/part[5]/test[3],并且我们希望属性id的值位于xpath的test[3]标记内,那么我需要能够调用如下所示的方法: public String getAttributeValue(String xpath, String attribute) { String attributeValue = "xpath/attribute".value();

我需要一个方法,可以返回指定xpath中指定属性的值。因此,例如,如果我们有xpath=/root/foo/body/part[5]/test[3],并且我们希望属性id的值位于xpath的test[3]标记内,那么我需要能够调用如下所示的方法:

public String getAttributeValue(String xpath, String attribute) {
     String attributeValue = "xpath/attribute".value();
     return attributeValue;
}
您可以尝试使用@命令

请注意,您还可以使用@

您可以尝试使用@命令

请注意,您还可以使用@

我想出来了

public String retrieveAttributeValue(Document document, String xpath, String attribute) throws IOException, ParserConfigurationException, SAXException, XPathExpressionException {
    XPath xPath = XPathFactory.newInstance().newXPath();
    XPathExpression xPathExpression = xPath.compile(xpath + "/" + attribute);
    String attributeValue = "" + xPathExpression.evaluate(document, XPathConstants.STRING);
    return attributeValue;
}
我想出来了

public String retrieveAttributeValue(Document document, String xpath, String attribute) throws IOException, ParserConfigurationException, SAXException, XPathExpressionException {
    XPath xPath = XPathFactory.newInstance().newXPath();
    XPathExpression xPathExpression = xPath.compile(xpath + "/" + attribute);
    String attributeValue = "" + xPathExpression.evaluate(document, XPathConstants.STRING);
    return attributeValue;
}

太棒了,我猜这应该与XPath=XPathFactory.newInstance.newXPath;?你可以把它放在一个方法中,让我看看它是如何工作的吗?你可以看看这是一个很好的教程,IIRC有一个使用java XPath进行属性提取的清晰示例。我猜这将与XPath XPath=XPathFactory.newInstance.newXPath;?你能不能把它放在一个方法中,这样我就可以看到它是如何工作的?你可以看看这是一个很好的教程和IIRC,有一个使用java XPath进行属性提取的清晰示例,这真的有效吗?我在您的XPath语句中没有看到“@”命令。是的,您必须传递该属性,即@idk。这是否确实有效?我在XPath语句中没有看到“@”命令。是的,您必须传递属性,即@id
public String retrieveAttributeValue(Document document, String xpath, String attribute) throws IOException, ParserConfigurationException, SAXException, XPathExpressionException {
    XPath xPath = XPathFactory.newInstance().newXPath();
    XPathExpression xPathExpression = xPath.compile(xpath + "/" + attribute);
    String attributeValue = "" + xPathExpression.evaluate(document, XPathConstants.STRING);
    return attributeValue;
}