2011-04-22 22 views
0

我一直在努力解決這個問題幾天,並衷心感謝您的幫助。我有一個Java應用程序查詢多個返回XML消息的Web服務。然後,我的應用程序分析使用xquery返回的這些多個XML消息。根據我的理解,xquery需要一個XML文檔來讀取XML,並且爲我的Java應用程序創建一個XML文檔,以便返回每個Webservices XML,這會大大減慢響應時間。如何解析使用WebServices返回到xQuery的XML?

有什麼辦法,由Webservices調用返回的XML字符串可以直接作爲輸入傳遞給xquery而無需創建XML文檔?來自單一來源的XML是一致的,但XML結構在多個Web服務調用中是不同的,所以我需要一個非常靈活的應用程序處理框架。

預先感謝您。 Neil。

+0

@ user720994:在XPath/XQuery 3.0(目前是工作草案)中有['fn:parse-xml()'](http://www.w3.org/TR/xpath-functions-30/ #func-parse-xml)函數。 – 2011-04-23 15:59:52

回答

0

字符串是字符串,而XQuery/XPath需要帶有名稱空間,元素和屬性的解析對象。這就是爲什麼需要解析的原因。

你可能會傳遞一個InputSource而不是DOM,但我被告知它無論如何會在引擎蓋下建立一個DOM。

0

有什麼辦法,由Web服務調用返回的XML字符串 可以 可以直接作爲輸入傳遞給 的XQuery,而無需創建XML文檔 ?

不,XQuery對XML文檔進行操作。您可以將字符串傳遞給XQuery應用程序,並將其視爲字符串,而不是XML文檔。

例如string-length()substring()matches()tokenize()replace(),...,等等

"<t name='Ann'/>" 

可以與接受字符串參數(多個),例如任何功能處理

但是,試圖將此字符串視爲XML文檔 - 例如試圖評估一個XPath表達式,如:

/t/@name 

是不可能在這個字符串,除非當然它被解析。