1

私はJavaで次のメソッドを持っています:

private static String getAttributValue(String attribute, String xmlResponseBody) {

    String searchAttributeValue = "";
    try {
        DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
        Document doc = docBuilder.parse(new InputSource(new StringReader(xmlResponseBody)));
        XPathFactory xPathFactory = XPathFactory.newInstance();
        XPath xpath = xPathFactory.newXPath();
        try {
            XPathExpression expr = xpath.compile("@" + attribute);
            Object result = expr.evaluate(doc, XPathConstants.NODESET);
            NodeList nodeList = (NodeList) result;
            Node node = nodeList.item(0);  // something wrong??
            searchAttributeValue = node.getTextContent();

        } catch (XPathExpressionException e) {
            e.printStackTrace();
        }
    } catch (ParserConfigurationException pce) {
        pce.printStackTrace();
    } catch (IOException ioe) {
        ioe.printStackTrace();
    } catch (SAXException sae) {
        sae.printStackTrace();
    }
    return searchAttributeValue;
}

xml ドキュメント (パラメーター "xmlResponseBody") 内の属性 (パラメーター "attribute") を検索します。このタスクを解決するために XPath を使用したいと思います。「//何かがおかしい」とコメントしているコードでは、変数ノードはnullです。私は何をすべきか?私のコードの間違いは何ですか?

ありがとう !マーウィーフ

4

1 に答える 1

2

サンプル xml (またはその一部) を見ずにこれに答えるのは難しいですが、次を使用して属性を検索できます。

xpath.compile("//@" + attribute)

これは、コンテキスト ノード内の attribute という名前の属性とその子孫を検索することを意味します。詳細については、こちらをご覧ください

于 2013-07-10T14:53:34.450 に答える