需要从 Windows Form C# 中非常复杂的 XML 文件中获取值

Need to get values out of a very complex XML file in Windows Form C#

我有一个 dataGridview1,我想向其中添加两列并从 XML 文件填充值。

我需要从 XML 文件中提取值的值具有标签:"Name"、"Status" 和 "IP"。它们在 'item' 个节点内。

我需要将 XML 文件中的名称与 dataGridview 列 (columnName) 匹配,如果匹配,我需要将 "Status" 和 "IP" 放入新添加的dataGridView 中的列。

XML 文件对我来说提取数据似乎太复杂了。我无法使用该数据集,因为它会抛出一个错误,即 'item' 在嵌套的 table 中使用了两次。我尝试使用 Xpath,但无法生成从 XML.

获取数据所需的 Xpath 字符串

欢迎任何帮助。谢谢你。

这是 link 到 XML 文件,我需要从中获取数据:https://net-perm.s3.amazonaws.com/test.xml

XmlDocument doc = new XmlDocument();
            doc.LoadXml(CUCMReply);
Int ColumnIndex;            //Known value
String ColumnName;          //Known value

                dataGridView1.Columns.Add(columnName + "RegisterStatus", columnName + "RegisterStatus"); 
                dataGridView1.Columns.Add(columnName + "IP", columnName + "IP");            

            

如果要编写 XPath 表达式,可以使用(local-name() 来规避名称空间问题):

//*[local-name()="item"]/*[local-name()="Name"][contains(.,"columnName")]/following::*[local-name()="Status" and ancestor::*[2][local-name()="CmDevices"] or local-name()="IP"][position()<3]

其中 "columnName" 是您必须匹配的值。 对于每场比赛,它将输出 2 个节点:Status 和 IP。