将XML读入Silverlight数据网格

时间:2010-03-25 14:16:50

标签: xml silverlight linq-to-xml

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

不确定我的错误。


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>

1 个答案:

答案 0 :(得分: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。
  • 在XElement上显式转换为各种原始类型,如String,通过使用case获取元素的值,缺少的元素导致null而不是异常。