我有一些代码使用XDocument
解析xml文件。如何从Xml检索值而不是字符串?
它正确地检索值,但是我保存到xml的一些值是Object
。所以,当我从XML阅读这些价值观,他们来为string
值,即使我投他们作为对象:
XDocument doc = XDocument.Load (file);
XElement xe = doc.Element ("EffectFile");
xe.Elements ("Options").Any ()
? xe.Elements ("Options").Select (
o => o.Elements ("Option").Select (
n => (object) n.Value).First ())
: null))
因为它出现在XML中的值:
...
<Option>88</Option>
...
当属"88"
,而不是Object 88
。
我明白,当我投了string
到Object
,它仍然是一个string
,但有没有办法让它的实际价值(不管这可能是)的Object
而不是string
?
因为这些都是不同的,是不是?:
object value = 88;
object value = (object) "88";
后来当我用我的options
值存储为object[]
,我希望能够做到:
int intValue = (int) value;
谢谢,这很有道理。但是使用type =“”唯一的方法?我只想保存我的对象[]值的方式,而不是对象字符串值,但不管它们以前是什么。所以为此,我必须将这些类型存储在xml中?在做“自动”xml序列化时,我注意到使用类似值 的序列化程序。也许他们是这样做的? –
2011-03-01 19:41:28
Xml可以作为文本文件写入磁盘,因此如果未指定type,则无法通过任何程序从磁盘读取它以知道它以前的类型。它不必是属性 - 它可以是嵌套在value元素中的另一个元素,也可以是具有其他名称的属性,但需要向读者提供一些提示。 – ajuc 2011-03-01 19:43:55
@Joan - 如果你从XML读取它们,那么它们将始终是字符串。 – 2011-03-01 19:46:13