Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我想使用图像url绑定图像_C#_Xml_Linq_Linq To Xml - Fatal编程技术网

C# 我想使用图像url绑定图像

C# 我想使用图像url绑定图像,c#,xml,linq,linq-to-xml,C#,Xml,Linq,Linq To Xml,我想阅读下面的XML并按以下顺序打印输出。你能帮我查询一下如何绑定图片吗 <?xml version="1.0" encoding="utf-8"?> <Book> <L1 id="100"> <Subjects> <subject> <thumb_image> <image url= url="http://dev2.merceed.

我想阅读下面的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>

目前还不清楚您希望当前查询如何工作,例如l.subject,以及使用XML中未出现的文章,但我怀疑您希望类似以下内容:

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的属性具有集合值没有意义,名为titles的迭代变量表示单个值也没有意义。注意这类事情会使维护代码变得更容易

  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.ElementsLi

我想您输入了一个错误,您的元素在里面,这是真的吗?此外,主题元素没有关闭…您的查询目前没有多大意义。文章从何而来?不,不,L1是标题idyeah,正如Ivan所建议的,您可能忘记了用结束元素来结束元素。此外,每个元素都需要使用关闭元素关闭。如果已经存在,请发布正确的xml示例。xml示例中没有L1元素。还有主题名称,而不是单一名称:@lazyberezovsky:修复了L1部分,但我不知道你所说的其余部分是什么意思。XML中的属性是SubjectName,Notch的属性显然是SubjectName,尽管它显然是一个集合。我已经在我的答案中对糟糕的命名进行了评论。在你之前的编辑中,你对SubjectName只选择了一个属性,那是在你编辑好答案之前,至少在我刷新你的答案之前:啊,这是有道理的。我只是在编辑之后才看到它:嗨,我尝试了这段代码,没有输出显示,当我放入notch属性时,只有时间id值出现,主题显示为System.Collection.Generic.List'1[System]@nagaraj在调试器的主题列表中可以看到什么?在Console.WriteLineitem.Id行上设置断点,并告诉您在item object.ya中看到了什么。我已经这样做了,当我调试显示主题列表的那一行时,但没有进入ui,所以主题列表像System.collection.Generic.List'1[System]一样打印,所以这面临问题,如果我没有放置Notch属性,我并没有得到任何输出,但并没有错误显示,若我添加了Notch属性,结果将显示,但主题列表打印类似that@nagaraj这是因为相反,枚举每个主题,并按Console.WriteLineitem.Subjects逐个显示它们
  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);
   }