在这里读取xml的方式是什么?

时间:2019-05-20 08:33:46

标签: c# asp.net xml

我在xml文件下面有这个文件:-

<?xml version="1.0" encoding="utf-8" ?>
<LoanProduct xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Program>
<ProgramID>6</ProgramID>
<Name>Primary Loan</Name>
<InterestRate>0.23</InterestRate>
<StartDate>2018-12-20</StartDate>
<EndDate>2019-03-31</EndDate>
</Program>

<Program>
<ProgramID>6</ProgramID>
<Name>Primary Loan</Name>
<InterestRate>0.25</InterestRate>
<StartDate>2019-04-1</StartDate>
<EndDate>2099-12-31</EndDate>
</Program>
</LoanProduct>

在我的类文件中,我必须读取xml文件并对其进行一些查询:-

   String xml = Server.MapPath("/Resources/LoanProduct.xml");
    DataSet dataSet = new DataSet();
    dataSet.ReadXml(xml);

假设我要检索ProgramID = 6和EndDate ='2099-12-31'的位置 我该如何实现?

2 个答案:

答案 0 :(得分:1)

您可以通过在命名空间XDocument下使用System.Xml.Linq来获得所需的结果。

XDocument doc = XDocument.Load(@"Path to your xml file");
var ns = doc.Root.GetDefaultNamespace();

var result = (from program in doc.Descendants(ns + "Program")
              where Convert.ToInt32(program.Element(ns + "ProgramID").Value) == 6 && program.Element(ns + "EndDate").Value == "2099-12-31"
              select program).FirstOrDefault();

输出:(来自调试器)

enter image description here

答案 1 :(得分:0)

您可以使用序列化。日期应保持一致,否则此代码将导致错误。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

namespace ConsoleApplication3
{
    class Program1
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XmlReader reader = XmlReader.Create(FILENAME);
            XmlSerializer serializer = new XmlSerializer(typeof(LoanProduct));

            LoanProduct loanProduct = (LoanProduct)serializer.Deserialize(reader);

        }
    }
    [XmlRoot(ElementName = "LoanProduct", Namespace = "")]
    public class LoanProduct
    {
        [XmlElement("Program", Namespace = "")]
        public List<Program> programs { get; set; }
    }
    [XmlRoot(ElementName = "Program", Namespace = "")]
    public class Program
    {
        public int ProgramID { get; set; }
        public string Name { get; set; }
        public decimal InterestRate { get; set; }
        public DateTime StartDate { get; set; }
        public DateTime EndDate { get; set; }
    }
}