2

我想在解析本地 XML 之前显示数据但不知道怎么做?我用这个试过了

XDocument loadedData = XDocument.Load("People.xml");
var data = from query in loadedData.Descendants("array")
       select new Person {
         Name = (string)query.Element("string"),
       };
listBox1.ItemsSource = data;

但它只向我展示了一个元素。

XML 是:

<?xml version="1.0" encoding="UTF-8"?>
<dict>
    <key>Categories</key>
    <array>
        <string>Playing baseball</string>
        <string>Driving a car</string>
        <string>Getting dressed</string>
        <string>Eating a hamburger</string>
        <string>Tying shoelace</string>
    </array>
</dict>

我想解析所有字符串元素。

4

2 回答 2

2

这应该有效。你想迭代元素内的array元素,所以我们调用Descendants("array").Elements(). query.Value由于value属性以字符串形式返回,因此无需转换为字符串。

XDocument loadedData = XDocument.Load("People.xml");
var data = (from query in loadedData.Descendants("array").Elements() 
            select new Person
            {
                 Name = query.Value,
            }).ToList();
listBox1.ItemsSource = data;
于 2013-05-20T17:45:08.877 回答
2

Element(System.Xml.Linq.XName)方法只返回一个元素——具有指定名称的第一个子元素。请改用Elements(System.Xml.Linq.XName)重载,它返回名称为指定名称的所有元素的集合。

试试这个代码:

XDocument loadedData = XDocument.Load("People.xml");

// Get all the <string /> elements from all th
var data = 
    from query in loadedData.Descendants("array") 
    from stringElem in query.Elements("string")
    select new Person { Name = (string)stringElem.Value };

listBox1.ItemsSource = data;
于 2013-05-20T17:39:31.190 回答