select xmlnode 中的子节点

select childnode in xmlnode

我从 httpGet 得到了这个结果,我想从中提取一些值。

<?xml version="1.0" encoding="UTF-8"?>
<ns4:endpoint xmlns:ns4="identity.ers.ise.cisco.com" xmlns:ers="ers.ise.cisco.com" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" description="Beskriv" id="eed9d9a0-5c8d-11ea-8778- 
9e4294fe2fb6" name="1A:1A:1A:1A:1A:1A">
  <link rel="self" href="https://10.100.10.10:9060/ers/config/endpoint/eed9d9a0-5c8d-11ea-8778- 
    9e4294fe2fb6" type="application/xml" />
  <customAttributes>
   <customAttributes>
     <entry>
        <key>Changed By API</key>
        <value />
     </entry>
     <entry>
        <key>TAG name</key>
        <value>TagNavn</value>
     </entry>
     <entry>
        <key>API Change Date</key>
        <value>2020-03-02</value>
     </entry>
     <entry>
        <key>API Changed By</key>
        <value>Mot</value>
     </entry>
    </customAttributes>
 </customAttributes>
 <groupId>aa13bb40-8bff-11e6-996c-525400b48521</groupId>
<identityStore />
<identityStoreId />
<mac>1A:1A:1A:1A:1A:1A</mac>
<portalUser />
  <profileId />
  <staticGroupAssignment>true</staticGroupAssignment>
 <staticProfileAssignment>false</staticProfileAssignment>
 </ns4:endpoint>

我可以使用 xmlnode.value 提取 "name" 和 "description",但我不确定如何访问我的自定义属性,例如 <mac><groupid> 它们是否被视为子节点? 任何帮助表示赞赏。

一些简单的东西(使用 System.Xml.Linq 命名空间中的 XDocument class):

// You don't need below line
// XDocument xml = XDocument.Load(@"path to txt file");
var macElement = xml.Descendants().Where(element => element.Name == "mac").FirstOrDefault();
// Similairly for groupid elemnt
var groupidElement = xml.Descendants().Where(element => element.Name == "groupid").FirstOrDefault();

if(macElement != null)
{
  // do something with macElement.Value
}
if(groupidElement != null)
{
  // do something with groupidElement.Value
}

另外调用 xml.Descendants() 是多余的,因此您可以将其存储在变量中,例如:

var descendants = xml.Descendants();

并重复使用它。