Zum Inhalt springen

XPath Namespace AXL -> leere nodes


Empfohlene Beiträge

Geschrieben

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.

Geschrieben

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.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...