c# - 使用通用标记从 XML 中获取特定数据

标签 c# xml linq

我发现的大多数教程都是基于实际上具有有用标签的 xml。我正在尝试根据集合中的一个条目获取一整套记录,使用具有非常通用标签的 XML。

//saved as thisxml.xml in current directory
//note the empty entry in the second row
/*
<?xml version="1.0" encoding="UTF-8"?>
<Note>
    <ROW>
        <ENT>up</ENT>
        <ENT>Medium</ENT>
        <ENT>Red</ENT>
        <ENT>down</ENT>
        <ENT>Medium</ENT>
    </ROW>
    <ROW>
        <ENT>right</ENT>
        <ENT>High</ENT>
        <ENT>Purple</ENT>
        <ENT/>
        <ENT>High</ENT>
    </ROW>
</Note>
*/
using System;
using System.Linq;
using System.Xml.Linq;

namespace ParseGenericXML
{
    class Program
    {
        static void Main(string[] args)
        {
            XDocument document = XDocument.Load("thisxml.xml");
            var selectRow = from r in document.Where(r=>(string)r.Element("ENT").Value=="Purple")
            select new
            {
                value1 = r.Element("ENT").Value,
                value2 = r.Element("ENT").Value,
                value3 = r.Element("ENT").Value,
                value4 = r.Element("ENT").Value,
                value5 = r.Element("ENT").Value
            };

            //selectRow results should be {"right","High","Purple",null,"High"}                   
        }
    }
}

最佳答案

试试这个:

var selectRow =
    from r in document.Root.Elements("ROW")
    where r.Elements("ENT").Any(e => e.Value == "Purple")
    select r.Elements("ENT").Select(e => e.Value).ToArray();

关于c# - 使用通用标记从 XML 中获取特定数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56814389/

相关文章:

c# - LINQ 查询 XML 文件以获取子标签

.net - Crystal 报表和 LINQ

linq - 从 RavenDB 订购结果

c# - Linq 查询加入显示错误

c# - 非常简单的lambda表达式

c# - 更改列标题的 datagridview rowheader 的颜色 C#

c# - 导出到 excel 数据时出错 : ' ' , 十六进制值 0x07,是使用 c# 的无效字符

C# - 反序列化 SOAP 消息

python - 使用 Python 从 XML 文件编辑 XML 文本

java - 为什么我的 Android 应用程序崩溃并出现 "Unfortunately myapp stopped"错误?