Windows Phone解析XML字符串

时间:2013-06-26 20:01:28

标签: windows-phone-7 xml-parsing

我试图解析这个从Virtual Earth回复的XML;

<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/search/local/ws/rest/v1">
<Copyright>
Copyright © 2013 Microsoft and its suppliers. All rights reserved. This API cannot be accessed and the content and any results may not be used, reproduced or transmitted in any manner without express written permission from Microsoft Corporation.
</Copyright>
<BrandLogoUri>
http://dev.virtualearth.net/Branding/logo_powered_by.png
</BrandLogoUri>
<StatusCode>200</StatusCode>
<StatusDescription>OK</StatusDescription>
<AuthenticationResultCode>ValidCredentials</AuthenticationResultCode>
<TraceId>
ebbe16390026429f967a06977c3bc94c|MIAM000025|02.00.150.1300|MIAMSNVM001367, EWRMSNVM003182
</TraceId>
<ResourceSets>
<ResourceSet>
<EstimatedTotal>1</EstimatedTotal>
<Resources>
<Location>
<Name>TE-V 1009, 44167 Camañas (TE)</Name>
<Point>
<Latitude>40.640868544578552</Latitude>
<Longitude>-1.1300414800643921</Longitude>
</Point>
<BoundingBox>
<SouthLatitude>40.637005827007876</SouthLatitude>
<WestLongitude>-1.1368284398869133</WestLongitude>
<NorthLatitude>40.644731262149229</NorthLatitude>
<EastLongitude>-1.1232545202418709</EastLongitude>
</BoundingBox>
<EntityType>Address</EntityType>
<Address>
<AddressLine>TE-V 1009</AddressLine>
<AdminDistrict>Aragon</AdminDistrict>
<AdminDistrict2>TE</AdminDistrict2>
<CountryRegion>Spain</CountryRegion>
<FormattedAddress>TE-V 1009, 44167 Camañas (TE)</FormattedAddress>
<Locality>Camañas</Locality>
<PostalCode>44167</PostalCode>
</Address>
<Confidence>Medium</Confidence>
<MatchCode>Good</MatchCode>
<GeocodePoint>
<Latitude>40.640868544578552</Latitude>
<Longitude>-1.1300414800643921</Longitude>
<CalculationMethod>Interpolation</CalculationMethod>
<UsageType>Display</UsageType>
<UsageType>Route</UsageType>
</GeocodePoint>
</Location>
</Resources>
</ResourceSet>
</ResourceSets>
</Response>

我已经找到了在这里或某处可能对我有用的任何答案。但是每个人都以其他方式问他们想要什么,我找不到任何东西。我只想得到&#34; Locality&#34;价值由&#34;地址&#34;作为字符串值。

我将此XML作为名为MyXMLString的字符串。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以使用XDocument.Parse

XDocument doc = XDocument.Parse(text);
// Just as an example of using the namespace...
XNamespace ns = "http://schemas.microsoft.com/search/local/ws/rest/v1";
foreach (var location in doc.Descendants(ns + "Address"))
{
    Console.WriteLine(location.Element(ns + "Locality").Value);
}

如果Windows Phone 7中没有Parse,您可以使用StringReader

var reader = new StringReader(text);
XDocument doc = XDocument.Load(reader);

如果 不起作用:

var bytes = Encoding.UTF8.GetBytes(text);
var stream = new MemoryStream(bytes);
XDocument doc = XDocument.Load(stream);