【问题标题】:i want binding image using image url我想使用图片网址绑定图片
【发布时间】:2013-02-21 09:36:03
【问题描述】:

我想阅读下面的 XML 并按以下顺序打印输出。可以帮忙查询如何绑定图片吗?

<?xml version="1.0" encoding="utf-8"?>
 <Book>
   <L1 id="100">
     <Subjects>
       <subject>
          <thumb_image>
                <image url= url="http://dev2.merceed.jpeg1"/>
          <thumb_image>
         </subject>
       <subject>
         <thumb_image>
                <image url= url="http://dev2.merceed.jpeg2"/>
          <thumb_image>
      </subject>
       <subject>
          <thumb_image>
                <image url= url="http://dev2.merceed.jpeg3"/>
          <thumb_image>
       </subject>
     </Subjects>
   </L1>
  <L2 id="200">
     <Subjects>
       <subject>
         <thumb_image>
                <image url= url="http://dev2.merceed.jpeg"/1>
          <thumb_image>
       </subject>
       <subject>
           <thumb_image>
                <image url= url="http://dev2.merceed.jpeg2"/>
          <thumb_image>
       </subject>
       <subject>
          <thumb_image>
                <image url= url="http://dev2.merceed.jpeg2"/>
          <thumb_image>
       </subject>
     </Subjects>
   </L2>
<Book>

我想要像这样的输出

100

图片1

图片2

图片3

......

200

图片11

图片12

图片13

我正在使用我的代码

 var query = from l in xmlDoc.Descendants("L1")
 from subject in l.Descendants("Subjects")
 select new Notch
 {
     name = (string)l.Attribute("id").Value,
     SubjectName= l.subject("article").Select(a => (string)a.Attribute("SubjectName")).ToList(),
      url = l.Element("article").Elements("thumb_image").Select(x => (string)x.Attribute("url")).ToString()
     };

     foreach (var result in query)
     {
         foreach (var titles in result.SubjectName)
         {
              Console.WriteLine(titles);
         }
         foreach (var image in category.Image)
         {
              Console.WriteLine(image);
         }
     }

【问题讨论】:

  • 我想你打错了,你的&lt;Li id="200"&gt;元素在&lt;Li id="100"&gt;里面,这是真的吗? subject 元素也没有关闭...
  • 您的查询目前没有多大意义。 “文章”从何而来?
  • no no..,L1 是 header id
  • 是的,正如 Ivan 所建议的,您可能忘记使用关闭 &lt;/Li&gt; 元素关闭您的 &lt;Li id="200"&gt; 元素。另外,每个&lt;Subject&gt; 元素都需要通过关闭&lt;/Subject&gt; 元素来关闭。如果它已经存在,请发布正确的 xml 示例。

标签: c# xml linq linq-to-xml


【解决方案1】:
  var query = 
      from l in xmlDoc.Root.Elements()
      select new {
         Id = (int)l.Attribute("id"),
         Subjects = l.Element("Subjects")
                     .Elements("subject")
                     .Select(s => (string)s.Attribute("SubjectName"))
                     .ToList()
      };

   foreach (var item in query)
   {
       Console.WriteLine(item.Id);

       foreach (var name in item.Subjects)
           Console.WriteLine(name);
   }

更新:编辑问题后(您已将 Li 元素更改为 L1 和 L2 元素),您应该使用 xmlDoc.Root.Elements() 而不是 xmlDoc.Root.Elements("Li")

【讨论】:

  • 嗨我试过这段代码没有输出显示,当我把notch属性放在那个时候只有id值出现并且主题显示像System.Collection.Generic.List'1 [System]
  • @nagaraj 您可以在调试器的主题列表中看到什么?在Console.WriteLine(item.Id) 行设置断点并告诉你在item 对象中看到的内容。
  • 是的,我已经做到了,当我调试显示主题列表但未进入 ui 的行时,主题列表打印为 System.collection.Generic.List'1[system] 所以这是面对问题
  • 然后如果我没有放 Notch 属性,我没有得到任何输出,但如果我添加 Notch 属性结果将显示但没有错误显示,但主题列表打印这样
  • @nagaraj 那是因为改为枚举每个主题,并由你做的一个显示它们Console.WriteLine(item.Subjects)
【解决方案2】:

目前还不清楚您希望当前查询如何工作(例如l.subject,以及使用未出现在您的 XML 中的article),但我怀疑您想要类似的东西:

var query = from l in xmlDoc.Descendants("Li")
            select new Notch
            {
                name = (string) l.Attribute("id"),
                SubjectName = l.Element("Subjects")
                               .Elements("subject")
                               .Select(x => (string) x.Attribute("SubjectName"))
                               .ToList()
            };

我还强烈建议您仔细查看变量和属性名称。一个名为SubjectName 的属性具有一个collection 值是没有意义的,而一个名为titles 的迭代变量代表一个single 是没有意义的em> 值。关注这类事情会让代码的维护变得容易得多。

【讨论】:

  • xml 示例中没有 L1 元素。还有主题名称,而不是单一名称:)
  • @lazyberezovsky:修复了L1 部分,但我不知道你说的其余部分是什么意思。 XML 中的属性是SubjectNameNotch 的属性显然是SubjectName(尽管显然是一个集合)。我在我的回答中评论了糟糕的命名。
  • 在您之前的编辑中,您选择了 SubjectName 的单一属性,该评论是在您编辑答案之前(嗯,至少在我刷新您的答案之前:)
  • @lazyberezovsky:啊,这很有道理。我只是在 我进行了编辑之后才看到它 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
  • 2019-11-22
  • 1970-01-01
相关资源
最近更新 更多