以下是我的 XML:
<Security xmlns="http://docs.oasis-open.org/x/xxxxx.xsd" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
<saml:Assertion ID="xxxxx" IssueInstant="xxxxxxx" Version="2.0" xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
<saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified">MyApp</saml:Issuer>
<saml:Subject>
<saml:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified">MyApp</saml:NameID>
</saml:Subject>
<saml:AttributeStatement>
<saml:Attribute Name="UserID" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
<saml:AttributeValue>TestUserID</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="UserFirstName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
<saml:AttributeValue>TestUserFirstName</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="UserLastName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
<saml:AttributeValue>TestUserLastName</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="ReasonForSearch" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
<saml:AttributeValue>ReasonForSearch</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
</Security>
在我的代码中,我想用适当的值替换 TestUserLastName、TestUserFirstName、TestUserID 和 ReasonForSearch。
我试着做这样的事情:
XmlDocument doc = new XmlDocument();
doc.Load("C:/TFS/xxx/yyy/zzz/SAMLAssert.xml");
XmlNamespaceManager xmlnsManager = new XmlNamespaceManager(doc.NameTable);
xmlnsManager.AddNamespace("sa", "saml:Assertion");
xmlnsManager.AddNamespace("sas", "saml:AttributeStatement");
xmlnsManager.AddNamespace("satt", "saml:Attribute");
xmlnsManager.AddNamespace("sattv", "saml:AttributeValue");
XmlNodeList xnList = doc.SelectNodes("/sa/sas/satt");
但xnList
计数始终为 0。我很想在 Linq-to-XML 中执行此操作。