2016-08-02 9 views
0

嗨,我有一個xml文件,如下所示。XML後代 - 獲取基於長度的值

<findAddressCoordinatesList> 
    <findAddressCoordinatesListItem> 
     <id>1</id> 
     <description>Electricity Sub Station 1M From ...</description> 
    </findAddressCoordinatesListItem> 
    <findAddressCoordinatesListItem> 
     <id>2</id> 
     <description>Beauchamp House, Greyfriars Road, ...</description> 
    </findAddressCoordinatesListItem> 
</findAddressCoordinatesList> 

我想從描述中創建一個地址列表,但描述可以是可變長度的。 我想我可能需要使用分隔符逗號分割描述並獲取數組長度,然後根據長度分配單個字段值。

任何建議什麼是最好的方法來做到這一點?

XDocument xmldocLinq = XDocument.Parse(Xmlstring); 
List<Address> AddressList = (from info in xmldocLinq.Descendants("findAddressCoordinatesListItem") 

    select new Address 
    {         
     Id = int.Parse(info.Element("Id").Value), 
     Number = (info.Element("description").Value.ToString().Split(',')[len -5]) //only if not null 
     Building = info.Element("description").Value.ToString().Split(',')[len -4], //only if not null 
     Street = info.Element("description").Value.ToString().Split(',')[len -3], 
     Town = info.Element("description").Value.ToString().Split(',')[len -2], 
     Postcode = info.Element("description").Value.ToString().Split(',')[len -1], 
    }).ToList(); 

回答

0

由於您已經知道哪些標籤會在描述中出現,因此最好將這些標籤保留在說明中。

例,

<description> 
    <number> ## </umber> 
    <building> XYZ </building> 
    <street> XXX </street> 
    <town> YYY </town> 
    <postcode> #### </postcode> 
</description> 

我想這是寫地址的最佳方式。

PS:您可以訪問循環這些元素以及

+0

XML是從HTTP響應到外部服務構建,並且不包含各領域,但只有描述。我需要分開各個字段並建立一個地址列表。 – user1603842