提取XML值湛蓝的服务管理API返回 [英] Extracting values from XML returned by azure service management API

查看:178
本文介绍了提取XML值湛蓝的服务管理API返回的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图尝试从XML文件中提取值的几种方法,但他们都不工作。我使用C#。 XML是如下:

i have tried several methods of trying to extract values from an XML file but none of them seem to work. I am using C#. The XML Is as follows

<?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,
 托管服务的名称,
 描述,
 位置,
 亲和基团和
标签

I would like to retrieve hosted-service-url, hosted-service-name, description, location, affinity-group and label

什么是最好的检索这些值的方式?

What would be the best of way of retrieving these values?

编辑:

由于L.B该方法完美的作品。但是我刚才被告知我将不得不采用较大的XML如下。

Thanks L.B that method works perfectly. However i have just been told i will have to use the larger XML that is below.

<?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>

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

My final question is, there is several repeated tags, such as ,

如何区分它们?

推荐答案

您可以用XML来LINQ到您解析XML字符串。对于恩,

you can use Xml to Linq to parse your xml string. For ex,

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的

or you can use XmlSerializer

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;
}

这篇关于提取XML值湛蓝的服务管理API返回的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆