我是 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
。
有人可以解释为什么返回值不同吗?