[英]Parsing xml string in windows phone 8
我有以下xml字符串:
<AssumeRoleWithWebIdentityResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<AssumeRoleWithWebIdentityResult>
<SubjectFromWebIdentityToken>us-east-1:xxxx</SubjectFromWebIdentityToken>
<Audience>us-east-1:xxxxxxxx</Audience>
<AssumedRoleUser>
<Arn>arn:aws:sts::xxxxxx/xxxxxx</Arn>
<AssumedRoleId>xxxx</AssumedRoleId>
</AssumedRoleUser>
<Credentials>
<SessionToken>xxxxxx</SessionToken>
<SecretAccessKey>xxxxx</SecretAccessKey>
<Expiration>2015-02-03T15:26:03Z</Expiration>
<AccessKeyId>xxxxxxx</AccessKeyId>
</Credentials>
<Provider>xxxxx</Provider>
</AssumeRoleWithWebIdentityResult>
<ResponseMetadata>
<RequestId>xxxxxx</RequestId>
</ResponseMetadata>
</AssumeRoleWithWebIdentityResponse>
我想在<Credentials>
節點內檢索SessionToken
我嘗試了以下方法:
XDocument xdoc = XDocument.Parse(response);
var root = xdoc.Root.Element("AssumeRoleWithWebIdentityResponse");
但變量root返回null。
如何從<Credentials>
節點檢索SessionToken?
您犯了兩個錯誤:
AssumeRoleWithWebIdentityResponse
元素; 它是根元素 AssumeRoleWithWebIdentityResponse
元素位於名稱空間( https://sts.amazonaws.com/doc/2011-06-15/"
)中,因此您需要在調用Element
或類似Element
時指定該名稱。所有后代元素也繼承該名稱空間,除非他們指定其他內容。 因此,例如:
XNamespace ns = https://sts.amazonaws.com/doc/2011-06-15/";
var root = xdoc.Root;
var result = root.Element(ns + "AssumeRoleWithWebIdentityResult");
要從Credentials
標記獲取SessionToken
,您可以非常明確:
var token = root.Element(ns + "AssumeRoleWithWebIdentityResult")
.Element(ns + "Credentials")
.Element(ns + "SessionToken")
.Value;
或者只使用Descendants
:
var token = root.Descendants(ns + "SessionToken").Single().Value;
無論哪種方式,它都使用了重要的名稱空間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.