【问题标题】:Reading XML into Silverlight Data Grid将 XML 读入 Silverlight 数据网格
【发布时间】:2010-03-25 23:04:24
【问题描述】:

我正在尝试读取一个简单的 XML 文件,但是当我运行 SQL 时,它总是返回 Ennumeration Yeilded no results。

不知道我哪里出错了。


XDocument xmlInfo = XDocument.Parse(xmlContent);
XNamespace ns = xmlInfo.Root.Name.Namespace;

 XNamespace ns = xmlBuilderInfo.Root.Name.Namespace;
 var Info = from XMLtagin xmlInfo.Descendants()
            where XMLtag.Name.LocalName == "XMLtag" 
            select new Information
                              {
                                  Name = XMLtag.Element("name").Value.ToString(),
                                  Region = XMLtag.Element("negion").Value.ToString()
                              };

            InfoList.SelectedIndex = -1;
            InfoList.ItemsSource = Info;

知道我做错了什么吗???

这里也是 XML 文件的示例

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<NameAndRegionDataSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <XMLTag>
  <Name>Content</Name>
  <Region>Peterborough</Region>
 </XMLTag>
 <XMLTag>
  <Name>Content</Name>
  <Region>Medicine Hat</Region>
 </XMLTag>

【问题讨论】:

    标签: xml silverlight linq-to-xml


    【解决方案1】:

    where 子句中“XMLtag”的大小写错误应该是“XMLTag”。

    我认为这段代码应该是这样的:-

    XDocument xmlInfo = XDocument.Parse(xmlContent);
    
    var Info = from XMLtag in xmlInfo.Root.Elements("XMLTag")
            select new Information
                              {
                                  Name = (string)XMLtag.Element("Name"),
                                  Region = (string)XMLtag.Element("Region")
                              };
    

    注意事项:-

    • XML 区分大小写,因此您需要注意元素名称
    • 如果可以,请避免使用 Descendents,它会更慢并且可能导致错误
    • 您的 xml 位于无名命名空间中,因此无需为命名空间而烦恼
    • XName 从字符串隐式转换,因此您不需要使用 LocalName 的 where。
    • XElement 上有显式转换为各种原始类型,如String,通过使用大小写获取元素的值,缺少元素会导致 null 而不是异常。

    【讨论】:

    • where 子句更像是一个错字,而不是帖子中的任何其他内容。然而,我做的比它需要的要困难得多,因为它现在更顺畅了!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    相关资源
    最近更新 更多