ich versuche in einem Applet mit XPath Knotenlisten aus einem DOM
Document
zu extrahieren. Das XML Dokument wird korrekt über http (InputStream)
geparst.
Sobald ich jedoch XPathAPI.selectNodeList anstosse, bekomme ich eine
AccessControlException.
Der Stacktrace [siehe unten] zeigt, dass irgendwo die Property user.dir
ausgelesen wird.
Wieso?
Wenn ich den XPathAPI Aufruf weglasse, bleibt auch die Ausnahme weg.
Ich benutze sdk1.4.0-b92 unter WIN2K.
Wo liegt der Fehler?
Hier der entscheidende Code:
void parse(){
Document doc;
URL myurl = new URL("http://localhost/testausgabe.xml");
InputStream is = myurl.openStream();
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = factory.newDocumentBuilder();
doc = builder.parse(is);
} catch (SAXException sxe) {
...
}
//hier der entscheidende Aufruf
NodeList n = XPathAPI.selectNodeList(doc,"DATA/*");
}
hier mein Stacktrace:
java.security.AccessControlException: access denied
(java.util.PropertyPermission user.dir read)
at
java.security.AccessControlContext.checkPermission(AccessControlContext.java:270)
at
java.security.AccessController.checkPermission(AccessController.java:401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:542)
at
java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1291)
at java.lang.System.getProperty(System.java:572)
at org.apache.xml.utils.TreeWalker.<init>(TreeWalker.java:149)
at org.apache.xml.dtm.ref.dom2dtm.DOM2DTM.<init>(DOM2DTM.java:1608)
at
org.apache.xml.dtm.ref.DTMManagerDefault.getDTM(DTMManagerDefault.java:189)
at
org.apache.xml.dtm.ref.DTMManagerDefault.getDTMHandleFromNode(DTMManagerDefault.java:438)
at
org.apache.xpath.XPathContext.getDTMHandleFromNode(XPathContext.java:195)
at org.apache.xpath.XPathAPI.eval(XPathAPI.java:274)
at org.apache.xpath.XPathAPI.selectNodeList(XPathAPI.java:202)
at org.apache.xpath.XPathAPI.selectNodeList(XPathAPI.java:182)
at domtest.MainClass.jbInit(MainClass.java:55)
at domtest.MainClass.init(MainClass.java:29)
at sun.applet.AppletPanel.run(AppletPanel.java:341)
at java.lang.Thread.run(Thread.java:536)
danke fürs Anschauen,
Kai