2

これは、xml "test" をロードしたいプログラムのコードです。これをビルドすると、ロードされ、「0」のノードがありません。ロードまたは x パスに問題があります。エクリプスを使用しています。この問題を解決するのを手伝ってください。

<?xml version="1.0"?>
<resourses>
    <resourse status="1">
        <name>resourse1</name>
        <type>1</type>
    </resourse>

    <resourse  status="2">
        <name>resourse2</name>
        <type>2</type>
    </resourse>

          <resourse  status="3">
        <name>resourse3</name>
        <type>3</type>
    </resourse>

</resourses>





public class xml_l 
{
public static void main(String[] args)

throws ParserConfigurationException, SAXException,
IOException, XPathExpressionException 

{
DocumentBuilderFactory domFactory =DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);

DocumentBuilder builder = domFactory.newDocumentBuilder();

Document doc = builder.parse("/home/user/test/test.xml");
if (doc==null)
{

System.out.println("not loaded");   

}
else
{

    System.out.println(" loaded "); 
}

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


XPathExpression expr = xpath.compile("//resourse[status =1]/name/text()"); 

Object result = expr.evaluate(doc, XPathConstants.NODESET);

NodeList nodes = (NodeList) result;
System.out.println(nodes.getLength());

for (int i = 0; i < nodes.getLength(); i++)                                        // nodes.getLength()
{
System.out.println(nodes.item(i).getNodeValue());

}
}
}
4

1 に答える 1

0

属性を探していることを xPath に通知するには、属性の前に「@」を付ける必要があります。

XPathExpression expr = xpath.compile("//resourse[@status=1]/name/text()");

いいえ

XPathExpression expr = xpath.compile("//resourse[status=1]/name/text()"); 
于 2012-11-09T06:38:28.433 に答える