c# - 获取 ChildNode 名称及其值

标签 c# xml xml-parsing

我有一个以下格式的 XML

<DBdestination>
    <val1>ANI</val1>
    <val2>DNIS</val2>
    <val3>Date</val3>
    <val4>Time</val4>
    <val5>ConnId</val5>
    <val6>UUID</val6>
    <val7>EmployeeId</val7>
    <val8>AgentDN</val8> 
</DBdestination>  

我需要获取DBdestination的子级名称及其列表中的值(或类似的值),例如val1,val2,val3,val4..... 和另一个列表 ANI,DNIS......

我试过了

var xdoc = XDocument.Load("C:/Users/xxx/Desktop/RCCM_TOOL/configRCCM.xml");
var units = xdoc.Descendants("DBdestination").Elements().ToArray();

但这给了我整个标签。

如何获得我想要的结果?

最佳答案

你已经很接近了:

xdoc.Descendants("DBdestination")
    .Elements()
    .Select(e => Tuple.Create(e.Name.ToString(), e.Value))
    .ToList()

这会给你一个 List<Tuple<string, string>> .

另一种选择是这样的:

...
    .Select(e => Tuple.Create(e.Name, e.Value))
    .ToList()

这会给你一个 List<Tuple<XName, string>> 。这样做的好处是 XName可以与名称 val1 进行比较并且不需要 namespaceToString()将为您提供完全限定的名称。


处理支持.NET 3.5的需要;让我们这样做:

xdoc.Descendants("DBdestination")
    .Elements()
    .Select(e => new
    {
        Name = e.Name,
        Value = e.Value
    })
    .ToList()

关于c# - 获取 ChildNode 名称及其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19682023/

相关文章:

c# - 从 url 读取数据返回空值

java - Jaxb 解码返回空值

Java XMLStreamWriter : Outputting Unicode extended characters (non-BMP)

google-apps-script - 如何解析存储在我的谷歌驱动器中但作为 html 类型突出的 XML 文件?

java - 使用 woodstox 和本地 dtd 验证和解析 xml

java - 如何使用java从xml(DOM)的多级标签中读取特定元素

c# - 如何在 ASP.NET WebApi2 中管理缓存?

c# - .Net 观察者模式改变。这些是什么时候发生的,为什么?

c# - Icecast 2 : protocol description, 使用 C# 流式传输到它

android - 结束 XML 标签的正确方法