徒劳无功地从使用XDocument(LINQ to XML)通过Azure REST API生成的XML文件中提取 Status 后代的值。使用此方法提取根元素没有问题:
var hsname = xmldoc.Root.Element(ns + "ServiceName").Value;
获得后代被证明是一场噩梦。下面的缩写XML文件 - 请帮助: - )
-<HostedService xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/windowsazure">
<Url>https://management.core.windows.net/subscriptionID/services/hostedservices/hostedservicename</Url>
<ServiceName><hostedservicename></ServiceName>
-<HostedServiceProperties>
<Description/>
<Location>South Central US</Location>
<Label>EEEEEEEEEEEEEEEEEE</Label>
</HostedServiceProperties>
-<Deployments>
-<Deployment>
<Name>DeploymentName</Name>
<DeploymentSlot>Production</DeploymentSlot>
<PrivateID>55555555555555555555</PrivateID>
<Status>Running</Status>
答案 0 :(得分:3)
你没有表现出你曾经尝试过的东西......但是我希望这很好:
string status = (string) xmldoc.Descendants(ns + "Status").FirstOrDefault();
如果没有Status
元素,那么将为您提供空值。您可能需要使用Single()
,SingleOrDefault()
等,具体取决于您的要求。
编辑:只是为了扩展评论,您可以在面对其他Status
元素时使代码更加健壮:
string status = (string) xmldoc.Descendants(ns + "HostedService")
.Descendants(ns + "ServiceName")
.Descendants(ns + "Deployments")
.Descendants(ns + "Deployment")
.Descendants(ns + "Status")
.FirstOrDefault();