使用XPath解析XML&;Java中的名称空间
你能帮我调整一下代码,让它能够解析XML吗?如果删除XML名称空间,它将起作用:使用XPath解析XML&;Java中的名称空间,java,xml,xpath,Java,Xml,Xpath,你能帮我调整一下代码,让它能够解析XML吗?如果删除XML名称空间,它将起作用: String webXmlContent = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<foo xmlns=\"http://foo.bar/boo\"><bar>baz</bar></foo>"; DocumentBuilderFactory dom
String webXmlContent = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<foo xmlns=\"http://foo.bar/boo\"><bar>baz</bar></foo>";
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
org.w3c.dom.Document doc = builder.parse(new StringInputStream(webXmlContent));
NamespaceContextImpl namespaceContext = new NamespaceContextImpl();
namespaceContext.startPrefixMapping("foo", "http://www.w3.org/2001/XMLSchema-instance");
XPath xpath = XPathFactory.newInstance().newXPath();
xpath.setNamespaceContext(namespaceContext);
XPathExpression expr = xpath.compile("/foo/bar");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
System.out.println("Got " + nodes.getLength() + " nodes");
String webXmlContent=“\n”+
“baz”;
DocumentBuilderFactory domFactory=DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder=domFactory.newDocumentBuilder();
org.w3c.dom.Document doc=builder.parse(新的StringInputStream(webXmlContent));
NamespaceContextImpl namespaceContext=新的NamespaceContextImpl();
namespaceContext.startPrefixMapping(“foo”http://www.w3.org/2001/XMLSchema-instance");
XPath=XPathFactory.newInstance().newXPath();
setNamespaceContext(namespaceContext);
XPathExpression expr=xpath.compile(“/foo/bar”);
Object result=expr.evaluate(doc,XPathConstants.NODESET);
节点列表节点=(节点列表)结果;
System.out.println(“Got”+节点.getLength()+节点”);