#c# #xml-parsing #xmldocument
Вопрос:
<samlp:Response ID="omlaceop"
IssueInstant="2021-09-22T01:52:44.494Z"
Version="2.0"
Destination="https://example.com"
InResponseTo="_4b625517-b486-4b8a-b321-33e3f81231da"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
<saml:Issuer>myself</saml:Issuer>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" />
</samlp:Status>
<saml:Assertion ID="baaoepbe"
IssueInstant="2021-09-22T01:52:44.494Z"
Version="2"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
<saml:Issuer>me</saml:Issuer>
<saml:Subject>
<saml:NameID Format="urn:oasis:names:tc:2.0:nameidformat:persistent">46</saml:NameID>
<saml:SubjectConfirmation>
<saml:SubjectConfirmationData Recipient="https://example.com"
NotOnOrAfter="2021-09-22T02:02:44.494Z"
InResponseTo="_4b625517-b486-4b8a-b321-33e3f81231da" />
</saml:SubjectConfirmation>
</saml:Subject>
</saml:Assertion>
</samlp:Response>
я попробовал несколько сообщений, связанных с этой ошибкой, но безуспешно, а также попытался использовать XmlDocument, но не смог получить значение InResponseTo. Мы очень ценим любую помощь.
подход 1(не сработал)
var xdoc = XDocument.Load("samlresponse.xml");
var items = from i in xdoc.Descendants("saml:SubjectConfirmationData")
select new
{
Recipient = (string)i.Attribute("InResponseTo")
};
подход 2 (не сработал)
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load("samlresponse.xml");
var SubjectConfirmationnodes = xmlDocument.SelectNodes(@"//saml:Subject/saml:SubjectConfirmation");
Ответ №1:
Чтобы получить значение
XmlNodeList nodeList = xmlDocument.GetElementsByTagName("saml:SubjectConfirmationData");
var InResponseTo = nodeList[0].Attributes[2].Value;