2014-03-26 27 views
0

我在commant提示符下運行下面的命令:在Java中使用Windows上的撒克遜的XPath從命令提示符

java -cp "saxon9he.jar" net.sf.saxon.Query -s:"xml document" -qs:'//Customer[@CustomerID="HUNGC"]//Country' -o:"results.xml" 

我得到這個: 源文件忽略 - 查詢不訪問上下文項

有誰知道可能是什麼問題以及如何解決? 謝謝!

+0

你確定那些'-s'和'-qs'參數?請使用您正在執行的確切命令編輯問題,並且如果XPath表達式在另一個文件中也是此文件。 –

+0

@JensErat你好,是的,我確定參數 –

回答

1

該警告正好意味着它說:您提供了一個源文檔,但您的XPath表達式沒有使用它。

如果您想了解爲什麼XPath表達式不使用源文檔,請向我們展示您的XPath表達式。給出此警告的示例應該是-qs:「2 + 2」,其中表達式的結果是4,而不管源文檔中的任何內容。

(您的評論之後)

我通常使用表達式附近的雙引號和單引號內的。它可能取決於你使用的是什麼shell,但是我懷疑這個表達式已經被傳遞給了Saxon圍繞單引號和全部,這意味着整個表達式只是一個字符串文字。 - 2小時前

+0

您好,這是XPath表達式: -qs:'//客戶[@ CustomerID =「HUNGC」] //國家' 我確定有一個客戶元素與attribut CustomerID ='HUNGC' –

+0

我通常在表達式周圍使用雙引號並在其中使用單引號。它可能取決於你使用的是什麼shell,但是我懷疑這個表達式已經傳遞給了Saxon圍繞引號和全部,這意味着整個表達式只是一個字符串文字。 –

+0

我用「// Customer [@ CustomerID ='HUNGC'] // Country」替換了我的表達式,它起作用了。你能否通過添加評論來編輯你的答案,以便我可以接受你的答案。非常感謝你! –

0

您會收到此錯誤消息,因爲您希望在可能不存在的文檔(xml document)上執行無效的XPath表達式(XPath expression)。

用輸入文檔和要執行的查詢替換字符串xml documentXPath expression

Saxon Command Line manual

-qs:querystring

允許查詢爲指定的內聯(如果它包含空格,您將需要大約表達報價保持命令行處理器高興)。例如當前目錄中的java net.sf.saxon.Query -qs:doc('a.xml')//p[1] selects elements within the file a.xml

-s:filename-or-URI

從指定文件提取輸入。如果指定了-u選項,或者名稱以「file:」或「http:」開頭,則名稱被認爲是URI而不是文件名。該文件必須包含一個XML文檔。文檔的文檔節點作爲上下文項目可用於查詢。可以將源文檔指定爲「-」以從標準輸入中獲取源文件。

+0

我的問題是不完整的,我不明白你的第一個評論,當你要求我正在執行的確切命令,我的壞。無論如何,謝謝你的回答! –

0

Here邁克爾·凱是一個例子,如何使用撒克遜作爲XPath命令行工具:

saxon() { java -cp saxon9he.jar net.sf.saxon.Query "[email protected]" ; } 
xpath() { saxon '!method=text' -s:- -qs:"$1" ; } 

這是SVN的輸出的例子:

svn info --xml | xpath '/info/entry/repository/root/text()'