-3

以下の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

Image1

Image2

Image3

............。

200

Image11

Image12

Image13

私のコードを使用しています

 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);
         }
     }
4

2 に答える 2

0
  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")

于 2013-02-21T09:42:17.863 に答える
0

現在のクエリがどのように機能するかはまったくわかりませんが(たとえばl.subject、その使用はarticleXMLに表示されません)、次のようなものが必要だと思います。

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

于 2013-02-21T09:41:33.377 に答える