28. April 200917 j Hallo, habe ein kleines Problem in Java. Ich sitze gerade an einem kleinen XPath Parser für AXL (das Sprachelement vom Cisco Unified Call Manager 6) Ergebnisse, welche in einer XML-Datei abgespeichert werden. Mein Problem sind höchstwahrscheinlich die Namespaces. Also erstmal brauche ich über XPath diese Elemente (Pfad speichere ich in einer Variable): private static final String XPATH_DEV_NAME = "/SOAP-ENV:Envelope/SOAP-ENV:Body/axl:executeSQLQueryResponse/return/row/name/text()"; private static final String XPATH_DEV_DESC = "/SOAP-ENV:Envelope/SOAP-ENV:Body/axl:executeSQLQueryResponse/return/row/description/text()"; Im späteren Verlauf versuche ich den Namespace zu deklarieren sprich: private static void xpath_connection(String file) throws ParserConfigurationException, SAXException, IOException, XPathExpressionException { DocumentBuilderFactory domFactory = DocumentBuilderFactory .newInstance(); domFactory.setNamespaceAware(true); DocumentBuilder builder = domFactory.newDocumentBuilder(); doc = builder.parse(file); XPathFactory factory = XPathFactory.newInstance(); xpath = factory.newXPath(); xpath.setNamespaceContext(ns); } private static NamespaceContext ns = new NamespaceContext() { @Override public String getNamespaceURI(String prefix) { String uri = null; if (prefix.equals("SOAP-ENV")) { uri = "http://schemas.xmlsoap.org/soap/envelope"; } else if (prefix.equals("axl")) { uri = "http://www.cisco.com/AXL/API/7.0"; } return uri; } @Override public String getPrefix(String namespaceURI) { // TODO Auto-generated method stub return null; } @Override public Iterator getPrefixes(String namespaceURI) { // TODO Auto-generated method stub return null; } }; Aber irgendwie liefert er mir dann nur noch leere Nodes, was meiner Meinung nach an dem Namespace (also genauer dem ":") liegt. Restlicher Quelltext funktioniert, wurde so aus einer anderen Anwendung komplett übernommen, die läuft. Meine Frage nun, wie könnte ich dieses Problem beheben und/oder umgehen? Vielen Dank vorab für eure Kooperation. Mfg Christian, 20, K.
29. April 200917 j Hallo, habe dieses Problem nun unschön behoben: //Entfernt das "SOAP-ENV:" sowie das "axl:" welches zu Problemen führte. // http://www.geocities.com/eric6930/findreplace.html public static void readReplace(String fname, String oldPattern, String replPattern){ String line; StringBuffer sb = new StringBuffer(); try { FileInputStream fis = new FileInputStream(fname); BufferedReader reader=new BufferedReader ( new InputStreamReader(fis)); while((line = reader.readLine()) != null) { line = line.replaceAll(oldPattern, replPattern); sb.append(line+"\n"); } reader.close(); BufferedWriter out=new BufferedWriter ( new FileWriter(fname)); out.write(sb.toString()); out.close(); } catch (Throwable e) { System.err.println("*** exception ***"); } } Mfg Christian, 20, K.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.