#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/…