我有这个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>
我正在阅读所有的属性使用
textReader.ReadToFollowing("original_name"); string title =textReader.ReadElementContentAsString("original_name",textReader.NamespaceURI);
然而,无论我尝试,我无法设法读取“图像”的子节点.
解决方法
您应该阅读< images>元素,然后读取到第一个< image>后代,然后读到下一个兄弟姐妹,直到你不能再.下面的代码显示了如何做到这一点.
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")); } } }