【问题标题】:Select in XML to a list在 XML 中选择到列表
【发布时间】:2016-10-04 19:39:47
【问题描述】:

我只想从变量中选择user list="default"user list="otherListName" 的内容。 就像当我的变量等于default 时,我想选择user list="default" 的内容。我的意思是:

<list nom="Nom" description="Description" image="no_image.png"/>

我希望将此内容解析为列表

<list nom="" description="" image=""/>
<list nom="" description="" image=""/>


<?xml version="1.0" encoding="utf-8"?>
<database>
    <user list="default">
        <list nom="Nom" description="Description" image="no_image.png"/>
    </user>
    <user list="otherListName">
        <list nom="" description="" image=""/>
        <list nom="" description="" image=""/>
    </user>
</database>`

我希望我的问题是可以理解的。

【问题讨论】:

  • 看看这个工作示例,了解如何使用 linq 从 Xml 中提取数据并创建一个列表。 dotnetfiddle.net/FkyqvA

标签: c# xml list select


【解决方案1】:

您可以使用 LINQ-to-XML,例如,假设 doc 是一个包含原始 XML 的 XDocument 变量:

var listName = "default";
var result = doc.Root
                .Elements("user")
                .Where(o => (string)o.Attribute("list") == listName)
                .Elements("list");

dotnetfiddle 中查看现场演示:

var raw = @"<?xml version='1.0' encoding='utf-8'?>
<database>
    <user list='default'>
        <list nom='Nom' description='Description' image='no_image.png'/>
    </user>
    <user list='otherListName'>
        <list nom='' description='' image=''/>
        <list nom='' description='' image=''/>
    </user>
</database>";
var doc = XDocument.Parse(raw);

var listName = "default";
var result = doc.Root
                .Elements("user")
                .Where(o => (string)o.Attribute("list") == listName)
                .Elements("list");

foreach(var r in result)
{
    Console.WriteLine(r.ToString());
}

输出:(对于listName = "default"

<list nom="Nom" description="Description" image="no_image.png" />

【讨论】:

    猜你喜欢
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多