выберите дочерний узел в xmlnode - PullRequest
0 голосов
/ 23 марта 2020

У меня есть этот результат из 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, но я не уверен, как получить доступ к моим пользовательским атрибутам, таким как <mac> и <groupid>. Они считаются дочерними узлы? Любая помощь приветствуется.

1 Ответ

1 голос
/ 23 марта 2020

Что-то столь же простое, как (используя XDocument класс из System.Xml.Linq пространства имен):

// 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();

и используйте его повторно.

...