また、これには適切なXML解析を使用することをお勧めします。ただし、指定したXMLには複数のルートノードがあるため、XMLドキュメントとして使用するための整形式ではないことに注意してください。ただし、これは簡単に修正できます。
XML解析を使用すると、面倒な解析を行うことなく、他のすべてのデータも簡単に取得できます。
これは非常に簡単で、可能であれば実際に使用する必要がある独自のXML解析コードよりもはるかに堅牢です。
XMLがxmlという文字列変数にあると仮定した1行の例を次に示します。
string locality = XElement.Load(new StringReader("<Root>"+xml+"<Root>")).XPathSelectElement("Address/Locality").Value.Trim();
そして、ここに適切な例があります:
using System;
using System.IO;
using System.Xml.Linq;
using System.Xml.XPath;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// Fix original XML, which has multiple root nodes!
// We fix it just by enclosing it in a root level element called "Root":
string xml = "<Root>" + originalXml() + "</Root>";
// Read the XML as an XML element.
var xElement = XElement.Load(new StringReader(xml));
// Easily access 'Locality' or any other node by name:
string locality = xElement.XPathSelectElement("Address/Locality").Value.Trim();
Console.WriteLine("Locality = " + locality);
}
// Note: This XML isn't well-formed, because it has multiple root nodes.
private static string originalXml()
{
return
@"<Name>
High Street, Lincoln, LN5 7
</Name>
<Point>
<Latitude>
53.226592540740967
</Latitude>
<Longitude>
-0.54169893264770508
</Longitude>
</Point>
<BoundingBox>
<SouthLatitude>
53.22272982317029
</SouthLatitude>
<WestLongitude>
-0.55030130347707928
</WestLongitude>
<NorthLatitude>
53.230455258311643
</NorthLatitude>
<EastLongitude>
-0.53309656181833087
</EastLongitude>
</BoundingBox>
<EntityType>
Address
</EntityType>
<Address>
<AddressLine>
High Street
</AddressLine>
<AdminDistrict>
England
</AdminDistrict>
<AdminDistrict2>
Lincs
</AdminDistrict2>
<CountryRegion>
United Kingdom
</CountryRegion>
<FormattedAddress>
High Street, Lincoln, LN5 7
</FormattedAddress>
<Locality>
Lincoln
</Locality>
<PostalCode>
LN5 7
</PostalCode>
</Address>";
}
}
}