我想在解析Local 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>
我想解析所有字符串元素。
答案 0 :(得分: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;
答案 1 :(得分: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;