首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析复杂的XML结构

解析复杂的XML结构
EN

Stack Overflow用户
提问于 2013-05-21 00:57:38
回答 2查看 752关注 0票数 2

我想在解析Local XML之前显示数据,但是不知道怎么做?

代码语言:javascript
复制
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是:

代码语言:javascript
复制
<?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>

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-21 01:45:09

这应该是可行的。您希望迭代array元素中的元素,因此我们调用Descendants("array").Elements()。由于value属性是作为字符串返回的,因此不需要将query.Value转换为字符串。

代码语言:javascript
复制
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;
票数 2
EN

Stack Overflow用户

发布于 2013-05-21 01:39:31

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

尝试以下代码:

代码语言:javascript
复制
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;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16654467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档