在XPath中,可以使用string() function将对象转换为字符串。现在我想将字符串转换回对象。
我确实理解在某些情况下(例如元素)不可能,因为某些信息丢失了。但它应该可以用于简单类型,如int或boolean。
我知道,对于数字,我可以使用number()
函数,但我想要一般机制,它适用于任何简单的类型变量。
答案 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,然后调用一个神奇的函数,将它恢复为你投射之前的任何东西。
将某些数据类型转换为其他数据类型的过程始终是单向的 - 您在之前丢失了的类型信息。那是因为新的数据类型无法存储以前的内容。
那么,你想做什么?我强烈怀疑你提出这个问题是因为你正在从错误的一端解决问题。