获取重复命名的xml元素的属性值

时间:2013-05-12 07:59:29

标签: c# windows-phone-7.1

<?xml version="1.0" encoding="UTF-8"?>
<root>
<item>
    <question>Which country's flag is this?</question>
    <img src="North_Korea.jpg"></img>
    <option value="Norway"></option>
    <option value="Philippines"></option>
    <option value="North Korea" isRight="true"></option>
    <option value="South Korea"></option>
    <option value="North_Korea.jpg"></option>
 </item>
 </root>

上面是xml文件。我想获取所有元素的属性值。但是在重复时无法获取元素的属性值。 我使用下面的代码

  XDocument xdoc = XDocument.Load("Assets/xml_files/flags.xml");                    

        foreach (var item in xdoc.Descendants("item").Elements())
        {
            switch (item.Name.LocalName)
            {
                case "img":
                    questions.ImageName = item.Attribute("src").Value;
                    break;
                case "option":                       
                    questions.OptionA = item.Attribute("value").Value;
                    questions.OptionB = item.Attribute("value").Value;
                    questions.OptionC = item.Attribute("value").Value;
                    questions.OptionD = item.Attribute("value").Value;
                    break;
                case "desc":
                    questions.Description = item.Value;
                    break;
            }
        }     

使用上面的代码我得到输出 作为
    optionA =挪威     optionB =挪威     OptionC中=挪威     optionD =挪威 相反,在xml文件中必须有不同的值。 请帮帮我。谢谢你的时间。

1 个答案:

答案 0 :(得分:0)

将您的代码更改为:

var i = 0;

var lstOptions = new List<string>();

XDocument xdoc = XDocument.Load("Assets/xml_files/flags.xml");                    

        foreach (var item in xdoc.Descendants("item").Elements())
        {
            switch (item.Name.LocalName)
            {
                case "img":
                    questions.ImageName = item.Attribute("src").Value;
                    break;
                case "option":           
                    lstOption.add(item.Attribute("value").Value);
                    break;
                case "desc":
                    questions.Description = item.Value;
                    break;
            }
        } 

        questions.OptionA = lstOption[0];
        questions.OptionB = lstOption[1];
        questions.OptionC = lstOption[2];
        questions.OptionD = lstOption[3];