67,549
社区成员




DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true); // never forget this!
// String str = "<?xml version='1.0' encoding='UTF-8'?><tree><node text='君实软件' draggable='false' id='0'><node id='000000000003' text='测试1部' leaf='false' loader='[object Object]'/><node id='S0003' text='刘备' leaf='true' loader='[object Object]'/></node></tree>";//假设这个 str 中已经是一个xml格式的字符串了
String str="<?xml version='1.0'?><tree><node text='test' draggable='false' id='200826' searchParam='200826'><node id='200826000001' text='总兵都' leaf='false'><node id='A01' text='宋江' leaf='true'/><node id='200826000002' text='军机部' leaf='false' loader='[object Object]' searchParam='200826'><node id='A03' text='吴用' leaf='true' loader='[object Object]'/><node id='A04' text='公孙胜' leaf='true' loader='[object Object]'/><node id='A05' text='戴宗' leaf='true' loader='[object Object]'/><node id='A06' text='时迁' leaf='true' loader='[object Object]'/></node></node></node></tree>";
str=new String(str.getBytes("ISO8859_1"), "UTF-8");//把字符串转换为utf-8格式。
//StringBufferInputStream 继承自 InputStream 类
StringBufferInputStream in = new StringBufferInputStream(str);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse(in);
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
//编译XPath表达式供以后计算使用。//BBB[@id='b1']
//xpath = "//RES[(@name = 'Count') and not(@parmType = 'DbField')]";
// XPathExpression expr = xpath.compile("//@id");
XPathExpression expr = xpath.compile("//node[(@id) and (@leaf='true')]");
//计算指定上下文中的 XPath 表达式并返回指定类型的结果。
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).getNodeValue());
}
null
null
null
null
null
System.out.println("node --" + i + "---" +"node attribute----" + nodes.item(i).getAttributes().item(0).toString());
XPathExpression expr = xpath.compile("//node[(@leaf='true')]");