2011-06-24 7 views
11

私はこのxmlファイルを持っています。C#XMLreaderと子ノード

  <movies> 
      <movie> 
       <score>8.582207</score> 
       <popularity>3</popularity> 
       <translated>true</translated> 
       <adult>false</adult> 
       <language>en</language> 
       <original_name>Transformers</original_name> 
       <name>Transformers</name> 
       <alternative_name>The Transformers</alternative_name> 
       <type>movie</type> 
       <id>1858</id> 
       <imdb_id>tt0418279</imdb_id> 
       <url>http://www.themoviedb.org/movie/1858<;/url> 
       <votes>28</votes> 
       <rating>7.2</rating> 
       <certification>PG-13</certification> 
       <overview>The Earth is caught in the middle of an intergalactic war /overview> 
       <released>2007-07-04</released> 
       <images> 
        <image type="poster" url="http://hwcdn.themoviedb.org/posters/304/4bc91347017a3c57fe007304/transformers-original.jpg" size="original" id="4bc91347017a3c57fe007304"/> 
        <image type="poster" url="http://hwcdn.themoviedb.org/posters/304/4bc91347017a3c57fe007304/transformers-mid.jpg" size="mid" id="4bc91347017a3c57fe007304"/> 
        <image type="poster" url="http://hwcdn.themoviedb.org/posters/304/4bc91347017a3c57fe007304/transformers-cover.jpg" size="cover" id="4bc91347017a3c57fe007304"/> 
        <image type="poster" url="http://hwcdn.themoviedb.org/posters/304/4bc91347017a3c57fe007304/transformers-thumb.jpg" size="thumb" id="4bc91347017a3c57fe007304"/> 
        <image type="backdrop" url="http://hwcdn.themoviedb.org/backdrops/2ce/4bc91339017a3c57fe0072ce/transformers-original.jpg" size="original" id="4bc9133s9017a3c57fe0072ce"/> 
        <image type="backdrop" url="http://hwcdn.themoviedb.org/backdrops/2ce/4bc91339017a3c57fe0072ce/transformers-poster.jpg" size="poster" id="4bc91339017a3c57fe0072ce"/> 
        <image type="backdrop" url="http://hwcdn.themoviedb.org/backdrops/2ce/4bc91339017a3c57fe0072ce/transformers-thumb.jpg" size="thumb" id="4bc91339017a3c57fe0072ce"/> 
       </images> 
      <last_modified_at>2010-04-26 03:26:14</last_modified_at> 
     </movie> 
    </movies> 

私は「画像」の子ノードを読み取るために管理することができませんでしたしてみてください何でも、しかし

textReader.ReadToFollowing("original_name"); 
string title =textReader.ReadElementContentAsString("original_name",textReader.NamespaceURI); 

を使用して、すべての属性を読んでいます。

+0

LINQ to XMLを参照してください。私は、XMLを読み書きするために使うほうがずっと簡単です。 – m4tt1mus

答えて

23

あなたが最初<image>子孫に読み、その後、あなたはもうできなくなるまで次の兄弟に読み、<images>要素に読んでください。以下のコードは、これをどのように行うことができるかを示しています。

public class StackOverflow_6473251 
{ 
    public static void Test() 
    { 
     string xml = @"    <movies> 
      <movie> 
       <score>8.582207</score> 
       <popularity>3</popularity> 
       <translated>true</translated> 
       <adult>false</adult> 
       <language>en</language> 
       <original_name>Transformers</original_name> 
       <name>Transformers</name> 
       <alternative_name>The Transformers</alternative_name> 
       <type>movie</type> 
       <id>1858</id> 
       <imdb_id>tt0418279</imdb_id> 
       <url>http://www.themoviedb.org/movie/1858</url> 
       <votes>28</votes> 
       <rating>7.2</rating> 
       <certification>PG-13</certification> 
       <overview>The Earth is caught in the middle of an intergalactic war /overview> 
       <released>2007-07-04</released> 
       <images> 
        <image type=""poster"" url=""http://hwcdn.themoviedb.org/posters/304/4bc91347017a3c57fe007304/transformers-original.jpg"" size=""original"" id=""4bc91347017a3c57fe007304""/> 
        <image type=""poster"" url=""http://hwcdn.themoviedb.org/posters/304/4bc91347017a3c57fe007304/transformers-mid.jpg"" size=""mid"" id=""4bc91347017a3c57fe007304""/> 
        <image type=""poster"" url=""http://hwcdn.themoviedb.org/posters/304/4bc91347017a3c57fe007304/transformers-cover.jpg"" size=""cover"" id=""4bc91347017a3c57fe007304""/> 
        <image type=""poster"" url=""http://hwcdn.themoviedb.org/posters/304/4bc91347017a3c57fe007304/transformers-thumb.jpg"" size=""thumb"" id=""4bc91347017a3c57fe007304""/> 
        <image type=""backdrop"" url=""http://hwcdn.themoviedb.org/backdrops/2ce/4bc91339017a3c57fe0072ce/transformers-original.jpg"" size=""original"" id=""4bc9133s9017a3c57fe0072ce""/> 
        <image type=""backdrop"" url=""http://hwcdn.themoviedb.org/backdrops/2ce/4bc91339017a3c57fe0072ce/transformers-poster.jpg"" size=""poster"" id=""4bc91339017a3c57fe0072ce""/> 
        <image type=""backdrop"" url=""http://hwcdn.themoviedb.org/backdrops/2ce/4bc91339017a3c57fe0072ce/transformers-thumb.jpg"" size=""thumb"" id=""4bc91339017a3c57fe0072ce""/> 
       </images> 
      <last_modified_at>2010-04-26 03:26:14</last_modified_at> 
     </movie> 
    </movies>"; 
     XmlReader r = XmlReader.Create(new StringReader(xml)); 
     r.ReadToFollowing("original_name"); 
     string title = r.ReadElementContentAsString("original_name", r.NamespaceURI); 
     r.ReadToFollowing("images"); 
     int imageCount = 0; 
     if (r.ReadToDescendant("image")) 
     { 
      do 
      { 
       Console.WriteLine("Image {0}", ++imageCount); 
       Console.WriteLine(" Type: {0}", r.GetAttribute("type")); 
       Console.WriteLine(" URL: {0}", r.GetAttribute("url")); 
       Console.WriteLine(" Size: {0}", r.GetAttribute("size")); 
       Console.WriteLine(" ID: {0}", r.GetAttribute("id")); 
      } while (r.ReadToNextSibling("image")); 
     } 
    } 
} 
+0

ありがとうございました。 – k787

+0

あなたは祖先に戻って 'last_modified_at'要素をどうやって進めますか? – Shimmy

+0

これは私のために働いた。しかし、カスタム構成ブロックを実装しながら、xmlreaderで使用するためにここに到着しました。助けてもらえませんが、もうこのようにしてはいけないと思います。 –

-3

は、これらのオブジェクトを利用してみてください。

XmlDocument xml = new XmlDocument(); 
XmlNodeList nodes = xml.ChildNodes; 
XmlNode node = nodes[0]; 
XmlNode childNode = node.ChildNodes[0]; 
+4

文書が大きい場合は、パフォーマンスが非常に悪くなります。通常、XMLReaderが正しい選択です。 –

関連する問題