首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从azure服务管理API返回的XML中提取值

从azure服务管理API返回的XML中提取值
EN

Stack Overflow用户
提问于 2012-02-01 01:16:01
回答 2查看 899关注 0票数 1

我尝试过几种从XML文件中提取值的方法,但似乎都不起作用。我正在使用C#。XML如下所示

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<HostedService xmlns="http://schemas.microsoft.com/windowsazure">
  <Url>hosted-service-url</Url>
  <ServiceName>hosted-service-name</ServiceName>
  <HostedServiceProperties>
    <Description>description</Description>
    <Location>location</Location>
    <AffinityGroup>affinity-group</AffinityGroup>
    <Label>label</Label>
  </HostedServiceProperties>
</HostedService>

我想检索托管服务url、托管服务名称、描述、位置、亲和组和标签

检索这些值的最佳方法是什么?

编辑:

谢谢L.B,这个方法工作得很好。然而,我刚刚被告知,我将不得不使用下面更大的XML。

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<HostedService xmlns="http://schemas.microsoft.com/windowsazure">
  <Url>hosted-service-url</Url>
  <ServiceName>hosted-service-name</ServiceName>
  <HostedServiceProperties>
    <Description>description</Description>
    <Location>location</Location>
    <AffinityGroup>affinity-group</AffinityGroup>
    <Label>base-64-encoded-name-of-the-service</Label>
  </HostedServiceProperties>
  <Deployments>
    <Deployment>
      <Name>deployment-name</Name>
      <DeploymentSlot>deployment-slot</DeploymentSlot>
      <PrivateID>deployment-id</PrivateID>
      <Status>deployment-status</Status>
      <Label>base64-encoded-deployment-label</Label>
      <Url>deployment-url</Url>
      <Configuration>base-64-encoded-configuration-file</Configuration>
      <RoleInstanceList>
        <RoleInstance>
          <RoleName>role-name</RoleName>
          <InstanceName>role-instance-name</InstanceName>
          <InstanceStatus>instance-status</InstanceStatus>
        </RoleInstance>
      </RoleInstanceList>
      <UpgradeDomainCount>upgrade-domain-count</UpgradeDomainCount>
      <RoleList>
        <Role>
          <RoleName>role-name</RoleName>
          <OsVersion>operating-system-version</OsVersion>
        </Role>
      </RoleList>
      <SdkVersion>sdk-version-used-to-create-package</SdkVersion>
      <InputEndpointList>
         <InputEndpoint>
            <RoleName>role-name</RoleName>
            <Vip>virtual-ip-address</Vip>
            <Port>port-number</Port>
         </InputEndpoint>
         …
      </InputEndpointList>
      <Locked>deployment-write-allowed-status</Locked>
      <RollbackAllowed>rollback-operation-allowed</RollbackAllowed>
    </Deployment>
  </Deployments>
</HostedService>

我的最后一个问题是,有几个重复的标签,例如,

我该如何区分它们呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-01 01:37:14

您可以使用Xml to Linq来解析您的xml字符串。对于ex来说,

代码语言:javascript
复制
var xElem = XElement.Load(new StringReader(xml));
var ns = XNamespace.Get("http://schemas.microsoft.com/windowsazure");
var obj = new
    {
        ServiceName = xElem.Descendants(ns + "ServiceName").First().Value,
        Description = xElem.Descendants(ns + "Description").First().Value,
    };

或者,您可以使用XmlSerializer

代码语言:javascript
复制
XmlSerializer xs = new XmlSerializer(typeof(HostedService), "http://schemas.microsoft.com/windowsazure");
var obj2 = (HostedService)xs.Deserialize(new StringReader(xml));



public class HostedService
{
    public string Url;
    public string ServiceName;
    public HostedServiceProperties HostedServiceProperties;
}

public class HostedServiceProperties
{
    public string Description;
    public string Location;
    public string AffinityGroup;
    public string Label;
}
票数 3
EN

Stack Overflow用户

发布于 2012-02-01 01:43:56

也许您可以先尝试XmlDocument ( http://msdn.microsoft.com/en-us/library/d271ytdx.aspx)和LINQ XML -( http://msdn.microsoft.com/en-us/library/bb669152.aspx)中的示例,然后将其应用到您的案例中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9083888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档