如何使用 LINQ 从 XML 文件中获取数据

本文关键字:获取 数据 文件 XML 何使用 LINQ | 更新日期: 2023-09-27 17:55:11

我有看起来像这样的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<record id="177" restricted="false">
    <type>record type</type>
    <startdate>2000-10-10</startdate>
    <enddate>2014-02-01</enddate>
    <titles>
        <title xml:lang="en" type="main">Main title</title>
        <!-- only one title element with type main -->
        <title xml:lang="de" type="official">German title</title>
        <!-- can have more titles of type official -->
    </titles>
    <description>description of the record</description>
    <categories>
        <category id="122">
            <name>category name</name>
            <description>category description</description>
        </category>
        <!-- can have more categories -->
    </categories>
    <tags>
        <tag id="5434">
            <name>tag name</name>
            <description>tag description</description>
        </tag>
        <!-- can have more tags -->
    </tags>
</record>

如何使用 LINQ 从这些 xml 文件中选择数据,还是应该使用其他文件?

如何使用 LINQ 从 XML 文件中获取数据

您可以使用

Load() 方法将 xml 加载到XDocument对象中对于文件,或字符串的Parse()方法:

var doc = XDocument.Load("your-file.xml");
// OR
var doc = XDocument.Parse(yourXmlString);

然后,可以使用 LINQ 访问数据:

var titles =
    from title in doc.XPathSelectElements("//title")
    where title.Attribute("type").Value == "official"
    select title.Value;

正在搜索 Xmlserializer 的示例,并找到这个: 如何反序列化 XML 文档那么为什么不试试呢。我在Visual Studio 2013中做了Ctrl + C和编辑->粘贴特殊->将XML粘贴为类,并且...哇,我生成了所有类。一个条件目标框架必须是 4.5,并且此函数可从 Visual Studio 2012+ 获得(如该帖子中所述)