我正在做一些非常简单的事情。我正在尝试从一个小的XML文件中检索节点。
<?xml version="1.0" encoding="UTF-8" ?>
<SAMLConfiguration xmlns="urn:componentspace:SAML:2.0:configuration">
<IdentityProvider Name="IdpNameInSPForIsuer"
Description="SecureAuth"
LocalCertificateFile=""
LocalCertificatePassword=""/>
<ServiceProviderProfiles>
<ServiceProvider NameIdentifier ="SPIssuerName"
ExpectsSignatureVerification="true"
ExpectsSignedResponse="false"
Certificate="sharedpubliccsert.cer"
DigestMethod="SAMLIdentifiers.DigestMethods.SHA1"
SignatureMethod="SAMLIdentifiers.SignatureMethods.RSA_SHA1"
SingleLogoutServiceUrl="https://serviceprovider/slo"
SendResponseBy="HTTP-Redirect" />
</ServiceProviderProfiles>
</SAMLConfiguration>
我正在尝试获取ServiceProvider。 下面是我的C#代码:
string parent =“ServiceProviderProfiles”; string children =“ServiceProvider”;
var nodePath = string.Concat(@“//”,parent,@“/”,children);
var xmlNode = xmlDocument.SelectSingleNode(nodePath);
当我调试时,xmlNode为null。我的代码有什么问题导致xmlNode为空?
答案 0 :(得分:0)
有很多方法可以做到这一点。
以下是示例代码
// xmlns attribute from the root
XNamespace ns = "urn:componentspace:SAML:2.0:configuration";
// read XML file into XmlDocument
XDocument doc = XDocument.Load("file.xml");
// Select XML descendants with Linq
var result = doc.Descendants(ns + "SAMLConfiguration").Descendants().Where(c => c.Name.LocalName.ToString() == "ServiceProvider")
.ToArray();