-5

how do i parse this xml data's "Question" element into an object called "question" with a string array property called "options"? I know there are lots of xml posts with answers but they all confuse me i just need one that fits my problem. There will be a total of 50 questions in the xml file, and i want to extract each question element and it's child elements and contents into a question object. i use c# on visual studio 2010.

<?xml version="1.0" encoding="utf-8" ?>
<Questions>
 <Question id ="1">
<Content>Which of the following statements represents the view expressed by the writer    in the first paragraph?</Content>
<Options>
  <A>Evil Thoughts will eventually ruin the evil man.</A>
  <B>If we do not stop the pendulum of thoughts from swinging, our thoughts will soon become our enemies.</B>
  <C>Too many evil thoughts leave fatal consequence.</C>
  <D>It is possible to decide what controls our thoughts.</D>
</Options>
</Question>
<Question id ="2">
<Content>From the argument in the second paragraph, it can be concluded that evil thoughts control the lives people who</Content>
<Options>
  <A>are helpless because they fly out of their minds</A>
  <B>cherish idle and slothful ways</B>
  <C>are thieves with evil instincts</C>
  <D>treasure and ruminate on them.</D>
</Options>
</Question>
<Question id ="3">
   <Content>The expression think of the devil and he will appear..., as used in this  passage, suggests that</Content>
 <Options>
  <A>like the devil, evil thoughts must not reign in our hearts</A>
  <B>evil thoughts are fantasies which exist only in people's minds</B>
  <C>uncontrolled evil thoughts may lead to evil deeds</C>
  <D>the devil gives evil thoughts only to those who invite him in.</D>
</Options>
</Question>
<Question id ="4">
<Content>Which of the following statements summarizes the argument of the last paragraph?</Content>
 <Options>
  <A>Heavy traffic on a miry and dirty road may lead to evil thoughts.</A>
  <B>The more evil we think, the more vile we are likely to become.</B>
  <C>Evil people should not be welcomed as guest in our homes the same way as we welcome good people.</C>
  <D>Evil thoughts control the key to the human heart and no one can keep the out.</D>
</Options>

4

1 に答える 1

4

LINQ to Xmlでそれを行うことができます:

XDocument xdoc = XDocument.Load(path_to_xml);
var query = xdoc.Descendants("Question")
                .Select(q => new Question()
                {
                    Id = (int)q.Attribute("id"),
                    Content = (string)q.Element("Content"),
                    Options = q.Element("Options")
                               .Elements()
                               .Select(o => (string)o).ToArray()
                });

これはIEnumerable<Question>シーケンスを返します。Question は次のようなクラスです。

public class Question
{
    public int Id { get; set; }
    public string Content { get; set; }
    public string[] Options { get; set; }
}
于 2012-12-12T16:54:19.117 に答える