首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

找出xml里面的所有某个名称的标签

2013-11-29 
找到xml里面的所有某个名称的标签xml如下:?xml version1.0 encodingUTF-8?resourcesresource n

找到xml里面的所有某个名称的标签
xml如下:


<?xml version="1.0" encoding="UTF-8"?>
<resources>
<resource name="level1" >
<else></else>
<resource name="level2" >
<resource name="level3" >
</resource>
</resource>
</resource>
</resources>


要找到所有resource标签的name属性,拼成字符串level1,level2,level3
是一个树,可能有无限级,怎么写?
[解决办法]
用xpath实现
需要用到dom4j.jar和jaxen.jar

        StringBuilder builder = new StringBuilder();
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read(new File(""));
        Element root = document.getRootElement();
        List<Element> list = root.selectNodes("//resource");
        for (Element e : list) {
            builder.append(e.attributeValue("name")).append(",");
        }

[解决办法]
Document doc = sax.build("test.xml");  
            Element rootEle = doc.getRootElement();                          
            List resourcesList = XPath.selectNodes(rootEle, "//resources/resource");  
// 循环list

[解决办法]
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(false);
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("src/test.xml");
XPathFactory xFactory = XPathFactory.newInstance();
XPath xpath = xFactory.newXPath();
XPathExpression expr = xpath.compile("//resource/@name");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
System.out.println(nodes.item(i).getTextContent());
}


xpath

热点排行