Десериализация Xml С помощью XPath

#c# #asp.net #xml

Вопрос:

Я хочу десериализовать свой xml-файл с заданным параметром.

 AddressInfo deserialized;
                XmlSerializer deserializer = new XmlSerializer(typeof(AddressInfo));
                using (TextReader reader = new StreamReader(@"D:dataAPIv2dataAPIFilessample_data.xml"))
                {
                    object obj = deserializer.Deserialize(reader);
                    deserialized = (AddressInfo)obj;
                }
 

Я могу десериализоваться без параметров, это работает. Но я хочу изменить эту операцию с помощью xpath для десериализации, как описано выше.

 XmlDocument doc = new XmlDocument();
                doc.Load(System.Web.HttpContext.Current.Server.MapPath("~/Files/sample_data.xml"));
                XmlNodeList nodeList = doc.SelectNodes($"/AddressInfo/City[@code='{citycode}']"); // I want to accomplish this part."
                    foreach (XmlNode node in nodeList)
                {
                    city.city_code = Convert.ToInt32(node.Attributes["code"].Value);
                    city.city_name = node.Attributes["name"].Value;
                    foreach (XmlNode subnode in node)
                    {
                        dist.district_name = subnode.Attributes["name"].Value;
                        dist.city_code = Convert.ToInt32(subnode.ParentNode.Attributes["code"].Value);
                        foreach (XmlNode xmlNode in subnode)
                        {
                            zip.district_name = xmlNode.ParentNode.Attributes["name"].Value;
                            zip.zip_code = Convert.ToInt32(xmlNode.Attributes["code"].Value);
                            dist.Zip.Add(zip);
                            zip = new Zip();
                        }
                        city.District.Add(dist);
                        dist = new District();
                    }
                }
 

Смогу ли я это сделать?

РЕДАКТИРОВАТЬ Это мой класс AddressInfo.

 [XmlRoot(ElementName = "AddressInfo")]
public class AddressInfo
{
    [XmlElement(ElementName = "City")]
    public List<City> City { get; set; }
    public AddressInfo()
    {
        City = new List<City>();
    }
}
 

И это мой городской урок.

 [XmlRoot(ElementName = "City")]
public class City
{
    public AddressInfo AddressInfo { get; set; }
    [XmlAttribute(AttributeName = "name")]
    public string city_name { get; set; }
    [XmlAttribute(AttributeName = "code")]
    public int city_code { get; set; }
    [XmlElement(ElementName = "District")]
    public List<District> District { get; set; }
    public City()
    {
        District = new List<District>();
        
    }

}
 

Я хочу прочитать города с заданным кодом города в качестве параметра. И десериализуйте xml.

Комментарии:

1. Что вы имеете в виду под «параметрами»? Как выглядит ваш AddressInfo.

2. @DanielW. Я отредактировал вопрос.

3. вы пробовали xpath, в основном используя XPathSelectElements ?

4. @Netferret это не работает с сериализатором

5. @incbeatz мой плохой, я вижу, что он использует XmlDocument, я обнаружил, что XDocument более полезен в этих сценариях. Это немного старовато, но, может быть, что-то подобное сработает для вас? c-sharpcorner.com/blogs/…