【发布时间】:2012-08-22 13:58:38
【问题描述】:
我是 LINQ 的新手,并使用它来查询 XML(这太不可思议了)。我有以下函数,它只是为 XML 中的每个 list 后代创建一个新的 List 对象。:
public void ParseLists(XDocument xDoc)
{
XNamespace ns = xDoc.Root.Name.Namespace;
AddRange((
from e in xDoc.Descendants(ns + "list")
select new List
{
Id = (string)e.Element(ns + "id"),
ItemsLink = (string)e.Element(ns + "items-link"),
BatchLink = (string)e.Element(ns + "batch-link"),
Name = (string)e.Element(ns + "name"),
IsVendor = (string)e.Element(ns + "is-vendor"),
Levels = (string)e.Element(ns + "levels")
}).ToList());
}
下面是 XML 的外观:
<lists xmlns="www.namespaceurl.com" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<list>
<batch-link>www.batchlinkurl.com</batch-link>
<id>12345</id>
. . .
</list>
</lists>
问题:在构建List 对象时,我最初使用Convert.ToString() 而不是(string) 来获取元素值作为字符串。我发现的是:
Convert.ToString(e.Element(ns + "id")) 将返回 <id>12345</id>
而
(string)e.Element(ns + "id") 将返回 12345。
谁能解释为什么返回值不同?
【问题讨论】:
标签: xml linq casting linq-to-xml type-conversion