【问题标题】:XLINQ: string vs Convert.ToString() when extracting element valuesXLINQ:提取元素值时的字符串与 Convert.ToString()
【发布时间】: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")) 将返回 &lt;id&gt;12345&lt;/id&gt;

(string)e.Element(ns + "id") 将返回 12345

谁能解释为什么返回值不同?

【问题讨论】:

    标签: xml linq casting linq-to-xml type-conversion


    【解决方案1】:

    Convert.ToString(...) 将调用重写的ToString() 方法,该方法将元素本身作为字符串返回。

    (string) ... 将使用overloaded explicit conversion to string operator,它将元素的文本内容作为字符串返回。

    【讨论】:

    • 就这么简单。谢谢乔恩!
    猜你喜欢
    • 2019-03-04
    • 1970-01-01
    • 2013-12-10
    • 2018-04-12
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    相关资源
    最近更新 更多