XPath:与string()函数相反?

时间:2009-07-04 16:31:27

标签: xpath

在XPath中,可以使用string() function将对象转换为字符串。现在我想将字符串转换回对象。

我确实理解在某些情况下(例如元素)不可能,因为某些信息丢失了。但它应该可以用于简单类型,如int或boolean。

我知道,对于数字,我可以使用number()函数,但我想要一般机制,它适用于任何简单的类型变量。

3 个答案:

答案 0 :(得分:4)

转到string很容易,因为你告诉它你想要一个字符串。

同样地,转到number很容易,因为你告诉它你想要一个数字。

但是没有通用的方法可以说'把它变回 x ',因为你还没有告诉它 x 是什么。

(换句话说,string()就像{/ 1}},就像Java / C / C ++ / C#那样。但是没有cast。)

string()不是对象序列化程序,因此无法反序列化。

你为什么要这个?也许还有另一种解决问题的方法。

答案 1 :(得分:2)

如果您的对象$x是数字1234,则string($x)将是字符串"1234"

如果对象$x是1000个XML元素的节点集,则第一个是

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

然后string($x)将是字符串"1234"

该函数不是双射,你不能有一个反转,因为许多不同的值映射到同一个字符串。

答案 2 :(得分:0)

在没有语言(我知道)中你可以将A转换为B,然后调用一个神奇的函数,将它恢复为你投射之前的任何东西。

将某些数据类型转换为其他数据类型的过程始终是单向的 - 您在之前丢失了的类型信息。那是因为新的数据类型无法存储以前的内容。

那么,你想做什么?我强烈怀疑你提出这个问题是因为你正在从错误的一端解决问题。