c# - 如何使用属性过滤 Xml 文件?

标签 c# asp.net xml linq active-directory

您好,我想控制一个 xml 文件...为此,我使用 linq to xml。

private string GetGroup(string xml, string id) 
        {
            XDocument document;
            XElement element;

            try
            {
                document = XDocument.Load(xml);
                //element = document.Root.Elements("Permissiongroup").FirstOrDefault(e => e.Element("id").Value == id);

                element = document.Elements("Permissiongroup").FirstOrDefault(e => e.Element("id").Value == id);

                if (element != null)
                {
                    return element.Element("display").Value;
                }
                else
                {
                    return string.Empty;
                }
            }
            catch (Exception)
            {
                return null;
            }
            finally 
            {
                document = null;
                element = null;
            }

        }

这是我的 xml:

<?xml version="1.0" encoding="iso-8859-1"?>

<Permissiongroup>
  <Permission id="Hessen" display="KV-IT" />
  <Permission id="Berlin" display="DBG_Update" />
</Permissiongroup>

例如我想要的方法是..

string group = GetGroup(xmlpath, "Hessen");

组是“KV-IT”

最佳答案

您当前拥有的内容存在一些问题 - 您缺少查询的权限并正在查找元素而不是属性。以下工作,尽管我会将其拆分以检查元素是否存在(例如,确保存在 Permission 元素等),而不是依赖于错误处理。

// string group = GetGroup(xmlpath, "Hessen"); // returns KV-IT
// string group2 = GetGroup(xmlpath, "Berlin"); //DBG_Update

private string GetGroup(string xml, string id)
{
    XDocument document;
    XElement element;

    try
    {
        document = XDocument.Load(xml);

        element = document.Elements("Permissiongroup").Elements(("Permission")).FirstOrDefault(t => t.Attribute("id").Value == id);

        if (element != null)
        {
            return element.Attribute("display").Value;
        }
        else
        {
            return string.Empty;
        }
    }
    catch (Exception ex)
    {
        return null;
    }
    finally
    {
        document = null;
        element = null;
    }

}

关于c# - 如何使用属性过滤 Xml 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23754954/

相关文章:

asp.net - 这个SQL语句怎么写呢?

mysql - 从mysql中的xml中提取值

c# - Fiddler - ReadResponse 失败 : The server did not return a response for this request

c# - 在启动线程之前无法更改 WPF 控件状态

c# - VB中泛型方法重载编译错误

c# - SQL Server 2008 - 存储文件

asp.net - 测试后 NUnit 回滚

asp.net - Mono 不适合哪些方面?

c# linq 选择不同的具有多个属性的元素

c# - 从字符串中获取 XML 数据