[
Lists Home |
Date Index |
Thread Index
]
Dare,
The Oracle XML Parser for Java supports a selectNodes(), selectSingleNode(),
and value() methods that support XPath 1.0
http://otn.oracle.com/tech/xml/xdk_java/content.html
The following program should answer your questions:
import java.io.*;
import oracle.xml.parser.v2.*;
import org.w3c.dom.*;
public class Test {
private static final String DOC =
"<A xmlns:glop='http://blah'>"+
"<C xmlns='http://blah'>abc</C>"+
"<glop:C>xyz</glop:C>"+
"<glop:C xmlns:glop='http://example.com'>123</glop:C>"+
"<C>456</C><B></B></A>";
public static void main(String[] args) throws Throwable {
DOMParser d = new DOMParser();
d.parse( new StringReader(DOC));
XMLDocument doc = d.getDocument();
doc.print(System.out);
NSResolver ns = new myResolver();
NodeList nl = doc.selectNodes("//p:C", ns);
System.out.println("Found " + nl.getLength() + " Elements...");
for (int i = 0, c = nl.getLength(); i < c; i++) {
Element e = (Element)nl.item(i);
System.out.println(e.getNamespaceURI()+", "+e.getNodeName());
} nl = doc.selectNodes("//*[local-name()='C' and local-name() != name()]", ns);
System.out.println("Found " + nl.getLength() + " Elements...");
for (int i = 0, c = nl.getLength(); i < c; i++) {
Element e = (Element)nl.item(i);
System.out.println(e.getNodeName());
}
}
static class myResolver implements NSResolver {
public String resolveNamespacePrefix(String f) {
if (f.equals("p")) return "http://blah";
return null;
}
}
}
The output is:
Found 2 Elements...
http://blah, C
http://blah, glop:C
Found 2 Elements...
glop:C
glop:C
__________________________________________________________________
Steve Muench - Developer, Product Mgr, Java/XML Evangelist, Author
Simplify J2EE and EJB Development with BC4J
http://otn.oracle.com/products/jdev/htdocs/j2ee_bc4j.html
Building Oracle XML Apps, www.oreilly.com/catalog/orxmlapp
----- Original Message -----
From: "Dare Obasanjo" <kpako@yahoo.com>
To: <xml-dev@lists.xml.org>
Sent: Saturday, July 27, 2002 10:50 PM
Subject: [xml-dev] XPath and Java DOM APIs
| A friend of mine told me that he couldn't find a Java
| DOM API that supported XPath which could successfully
| return
|
| a.) All the C elements from the http://blah namespace
|
| b.) All the C elements in documents that have a
| namespace name.
|
| from the XML document below.
|
| <?xml version="1.0" ?>
| <A xmlns:glop="http://blah">
| <C xmlns="http://blah">abc</C>
| <glop:C>xyz</glop:C>
| <glop:C xmlns:glop="http://example.com">123</C>
| <C>456</C>
| <B>
| </B>
| </A>
|
| I doubt that this is the case but couldn't contradict
| his claims after doing a few cursory searches on
| Google.
|
| Can anyone confirm or deny this and provide sample
| code if it is the latter?
|
| Thanks.
|
| PS: I think his only caveat is that it uses Java 1.3
| not Java 1.4.
|
| =====
| THINGS TO DO IF I BECOME AN EVIL OVERLORD #79
| If my doomsday device happens to come with a reverse switch, as soon as it has been employed it will be melted down and made into
limited-edition commemorative coins.
|
| __________________________________________________
| Do You Yahoo!?
| Yahoo! Health - Feel better, live better
| http://health.yahoo.com
|
| -----------------------------------------------------------------
| The xml-dev list is sponsored by XML.org <http://www.xml.org>, an
| initiative of OASIS <http://www.oasis-open.org>
|
| The list archives are at http://lists.xml.org/archives/xml-dev/
|
| To subscribe or unsubscribe from this list use the subscription
| manager: <http://lists.xml.org/ob/adm.pl>
|
|
|