如何在 XML 中获取元素属性的值

帕维尔·霍德克

请问如何在此 XML 中获取元素 StatusCode 的属性值的值:

<LogoutResponse 
    ID="_f525259e-7e91-4282-9dc3-a0da65a4a17a" 
    Version="2.0" 
    IssueInstant="2021-05-17T15:41:55Z" 
    InResponseTo="_5089729f-5cc0-4a66-a3c1-e710cde92897" 
    Destination="https://idp.xyz/logout.aspx" 
    xmlns="urn:oasis:names:tc:SAML:2.0:protocol">
    <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://abc.xyz/api</Issuer>
    <Status>
        <StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" />
    </Status>
</LogoutResponse>
马克·格拉维尔

由于命名空间,这有点混乱:

var doc = new XmlDocument();
doc.LoadXml(@"<LogoutResponse 
    ID=""_f525259e-7e91-4282-9dc3-a0da65a4a17a""
    Version=""2.0"" 
    IssueInstant=""2021-05-17T15:41:55Z"" 
    InResponseTo=""_5089729f-5cc0-4a66-a3c1-e710cde92897""
    Destination=""https://idp.xyz/logout.aspx"" 
    xmlns=""urn:oasis:names:tc:SAML:2.0:protocol"">
    <Issuer xmlns=""urn:oasis:names:tc:SAML:2.0:assertion"">https://abc.xyz/api</Issuer>
    <Status>
        <StatusCode Value=""urn:oasis:names:tc:SAML:2.0:status:Success"" />
    </Status>
</LogoutResponse>");

var ns = new XmlNamespaceManager(doc.NameTable);
ns.AddNamespace("oasis", "urn:oasis:names:tc:SAML:2.0:protocol");
var attr = (XmlAttribute)doc.SelectSingleNode(
    "/oasis:LogoutResponse/oasis:Status/oasis:StatusCode/@Value", ns);
System.Console.WriteLine(attr.Value);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章