【问题标题】:search particular value in xml在 xml 中搜索特定值
【发布时间】:2019-09-23 17:01:43
【问题描述】:

我有这个特殊的 xml 文件元素。如果参数名称是“宗教名称”,我想获取参数值。如何使用 C# 使用 LINQ 进行搜索?

  1. 读取并加载xml文件文件。
  2. 搜索参数名称。
  3. 获取参数值。
    <context-param>
        <param-name>Religion Name</param-name>
        <param-value>Roman Catholic</param-value>
    </context-param>
    <context-param>
        <param-name>Name</param-name>
        <param-value>James Smith</param-value>
    </context-param>

【问题讨论】:

标签: c# xml


【解决方案1】:
        var doc = new XmlDocument();
        doc.LoadXml("<root>\r\n  <context-param>\r\n    <param-name>Religion Name</param-name>\r\n    <param-value>Roman Catholic</param-value>\r\n  </context-param>\r\n  <context-param>\r\n    <param-name>Name</param-name>\r\n    <param-value>James Smith</param-value>\r\n  </context-param>\r\n</root>");

        var nameList = doc.GetElementsByTagName("param-name");
        var valueList = doc.GetElementsByTagName("param-value");
        for (int i = 0; i < nameList.Count; i++)
        {
            if (nameList[i].InnerXml.Equals("Religion Name"))
            {
                //get your value
                var value= valueList[i].InnerXml;
            }

        }

【讨论】:

【解决方案2】:

我喜欢为这些类型的程序使用字典

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication132
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            Dictionary<string, string> dict = doc.Descendants("context-param")
                .GroupBy(x => (string)x.Element("param-name"), y => (string)y.Element("param-value"))
                .ToDictionary(x => x.Key, y => y.FirstOrDefault());

            string religion = dict["Religion Name"];

        }
    }


}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 2016-02-08
    相关资源
    最近更新 更多