在XPath中,可以使用string() function將對象轉換爲字符串。現在我想將字符串轉換回一個對象。XPath:與string()函數相反嗎?
我明白這在某些情況下是不可能的(例如元素),因爲有些信息丟失了。但它應該是可能的簡單類型,如int或布爾值。
我知道,對於數字我可以使用number()
函數,但我想要一般的機制,它將適用於任何簡單的類型變量。
在XPath中,可以使用string() function將對象轉換爲字符串。現在我想將字符串轉換回一個對象。XPath:與string()函數相反嗎?
我明白這在某些情況下是不可能的(例如元素),因爲有些信息丟失了。但它應該是可能的簡單類型,如int或布爾值。
我知道,對於數字我可以使用number()
函數,但我想要一般的機制,它將適用於任何簡單的類型變量。
去string
很容易,因爲你告訴它你想要一個字符串。
同樣,去number
很容易,因爲你已經告訴它你想要一個數字。
但沒有通用的方法說「把它放回X」,因爲你還沒有告訴它什麼X是。
(換句話說,字符串()就像是一個cast
如Java/C/C++/C#有,但沒有uncast
。)
字符串()是不是一個對象序列化,這樣你就可以不反序列化。
你爲什麼要這樣?也許還有另一種解決問題的方法。
在沒有任何語言的情況下(我知道),你可以投A到B然後調用一個神奇的函數,將它恢復到它鑄造之前的狀態。
將某些數據類型轉換爲其他類型的過程始終是單向的 - 您將丟失信息之前的信息是什麼類型。這是因爲新數據類型有無法存儲之前的內容。
那麼,你想要做什麼?我強烈懷疑你問這個問題是因爲你正在從錯誤的一端處理問題。
同意,但如果你知道的類型,你可以經常投退。例如:(圓形)圖。 – javapowered 2009-08-17 16:39:14
如果您的對象$x
是數字1234
,那麼string($x)
將是字符串"1234"
。
如果你的對象是$x
1000種XML元素的節點集,第一個是
<wibble><wobble>1<ping/>2</wobble>34</wibble>
然後string($x)
將字符串"1234"
。
函數不是雙射,因爲許多不同的值映射到同一個字符串,所以不能有反函數。
這是對非雙射問題的一個很好的解釋。 – TMG 2017-05-30 09:44:51
對不起,在響應中的延遲...我實際需要的是簡單類型的序列化(很好,序列化很容易)和反序列化,但我當然知道我要構造的變量的實際類型!:) 看來問題不是關於XPath的要麼:)我只是用BPEL的XPath MYVARIABLE 建設,其中MYVARIABLE是正確的類型,這工作得很好 –
javapowered
2009-07-07 22:19:53