2011-06-24 10 views
11

मेरे पास यह xml फ़ाइल है।सी # एक्सएमएलreader और बच्चे नोड्स

  <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 से XML पर देख सकते हैं। मुझे एक्सएमएल पढ़ने/बनाने के लिए उपयोग करना बहुत आसान लगता है। – m4tt1mus

उत्तर

23

आप <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")); 
     } 
    } 
} 
+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 आमतौर पर सही विकल्प है। –

संबंधित मुद्दे