2009-07-04 51 views
2

在XPath中,可以使用string() function將對象轉換爲字符串。現在我想將字符串轉換回一個對象。XPath:與string()函數相反嗎?

我明白這在某些情況下是不可能的(例如元素),因爲有些信息丟失了。但它應該是可能的簡單類型,如int或布爾值。

我知道,對於數字我可以使用number()函數,但我想要一般的機制,它將適用於任何簡單的類型變量。

回答

4

string很容易,因爲你告訴它你想要一個字符串。

同樣,去number很容易,因爲你已經告訴它你想要一個數字。

但沒有通用的方法說「把它放回X」,因爲你還沒有告訴它什麼X是。

(換句話說,字符串()就像是一個cast如Java/C/C++/C#有,但沒有uncast。)

字符串()是不是一個對象序列化,這樣你就可以不反序列化。

你爲什麼要這樣?也許還有另一種解決問題的方法。

+0

對不起,在響應中的延遲...我實際需要的是簡單類型的序列化(很好,序列化很容易)和反序列化,但我當然知道我要構造的變量的實際類型!:) 看來問題不是關於XPath的要麼:)我只是用BPEL 的XPath MYVARIABLE建設,其中MYVARIABLE是正確的類型,這工作得很好 – javapowered 2009-07-07 22:19:53

0

在沒有任何語言的情況下(我知道),你可以投A到B然後調用一個神奇的函數,將它恢復到它鑄造之前的狀態。

將某些數據類型轉換爲其他類型的過程始終是單向的 - 您將丟失信息之前的信息是什麼類型。這是因爲新數據類型有無法存儲之前的內容。

那麼,你想要做什麼?我強烈懷疑你問這個問題是因爲你正在從錯誤的一端處理問題。

+0

同意,但如果你知道的類型,你可以經常投退。例如:(圓形)圖。 – javapowered 2009-08-17 16:39:14

1

如果您的對象$x是數字1234,那麼string($x)將是字符串"1234"

如果你的對象是$x 1000種XML元素的節點集,第一個是

<wibble><wobble>1<ping/>2</wobble>34</wibble> 

然後string($x)將字符串"1234"

函數不是雙射,因爲許多不同的值映射到同一個字符串,所以不能有反函數。

+0

這是對非雙射問題的一個很好的解釋。 – TMG 2017-05-30 09:44:51

相關問題