C#XMLreader和子节点
本文关键字:子节点 C#XMLreader | 更新日期: 2023-09-27 18:00:14
我有这个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"));
}
}
}
尝试使用这些对象:
XmlDocument xml = new XmlDocument();
XmlNodeList nodes = xml.ChildNodes;
XmlNode node = nodes[0];
XmlNode childNode = node.ChildNodes[0];