如何在WebAPI .NET中将XML用作数据源

时间:2019-03-18 18:34:14

标签: c# asp.net-web-api2

我的WebAPI遇到一些问题。我已经按照Microsoft的指南进行操作了,并且可以使用:https://docs.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api?fbclid=IwAR0tEMDMX3URn2YO0pwnTTAbY2RuGkdu-HUobznac4Lwus6rOVPSeiX-lFs

现在,我希望能够从XML文件中获取数据,而不是指南使用的硬编码值。我已经尝试搜索此内容,但不确定是否找到正确的东西。我该怎么办?

我尝试过的代码:

[('Expedien N0', '18-00232995'), ('Expedien', '1-21-212-16-26'), ('Reference', 'RE9833'), ('tramite', '1234567'), ('Expedien N°', '18-00777'), ('Expedien N°', '18-0022995')]
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ You have your intended tuple here in your findall results

XML代码:

    public IEnumerable<Book> GetAllProducts()
    {

    XDocument doc = XDocument.Load("C:\\Users\\Name\\Desktop\\products.xml");

    foreach (XElement element in doc.Descendants("Catalog")

        .Descendants("Product"))

    {

        Product product = new Product();

        product.Id = element.Element("Id").Value;
        product.Name = element.Element("Name").Value;
        product.Category = element.Element("Category").Value;
        product.Added_Date = element.Element("Added_Date").Value;//this will not work because its not a string
        product.Price = element.Element("Price").Value;//this will not work because its not a string

        products.Add(product);

        }

        return products;
    }

1 个答案:

答案 0 :(得分:0)

您只需要将string解析为特定类型

Product product = new Product();
//..
product.Added_Date = DateTime.Parse(element.Element("Added_Date").Value);
product.Price = double.Parse(element.Element("Price").Value); //or float, or decimal

并考虑使用Elements而不是Descendants方法,因为最后一个返回所有子代及其内部子代,依此类推,而Elements返回第一级子代

var productNodes = doc.Root.Elements("product"); //note this is case sensitive
foreach (XElement element in productNodes) {
    Product product = new Product();
    //..
}