ilerleartik
ilerleartik

Reputation: 115

Windows Phone Parse XML String

I'm trying to parse this XML retrieved as a response from Virtual Earth;

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

I've looked for any answer that might work for me on here, or somewhere. But everyone asked in other ways for what they want, and I could not find anything. I just want to get "Locality" value consisted by "Address" as a string value.

I have this XML as a string Named MyXMLString.

Thanks in advance.

Upvotes: 0

Views: 1065

Answers (1)

Jon Skeet
Jon Skeet

Reputation: 1500225

You can just use 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);
}

If Parse isn't available in Windows Phone 7, you could use a StringReader:

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

Or if that doesn't work:

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

Upvotes: 1

Related Questions