如何使用 C# 中的 XmlDocument 从具有属性的元素中的子级获取 XML 信息

本文关键字:元素 获取 信息 XML 属性 中的 何使用 XmlDocument | 更新日期: 2023-09-27 18:33:15

<response>
  <payment loanType="thirtyYearFixed">
    <rate>4.09</rate>
    <monthlyPrincipalAndInterest>410</monthlyPrincipalAndInterest>
    <monthlyMortgageInsurance>54</monthlyMortgageInsurance>
  </payment>
</response>

我的问题是我如何从利率、每月本金和利息和每月抵押贷款保险中获取信息?我已经尝试了各种不同的方法,并在发布此内容之前使用以下代码作为我的最后手段停止了XDocument:

Rate = root.SelectSingleNode("//response/payment[@loanType='thirtyYearFixed']/rate").InnerText;

这只是速率子元素的代码。我已经在我正在解析的 XML 文件中获得了这部分之前的所有信息,但我用这个碰到了一堵砖墙,似乎无法弄清楚。我甚至使用XMLNodeList和base//response/payment[@loanType='thirtyYearFixed']作为变量,然后nodeVar["rate"]。内部文本,仍然得到一个空引用错误。

有一种感觉,这将是我忽略的一些小块,但我不仅没有选择,而且没有时间。

如何使用 C# 中的 XmlDocument 从具有属性的元素中的子级获取 XML 信息

也许可以尝试这样的事情:

var xdoc = XDocument.Load(@"C:'Temp'doc.xml");
var node = xdoc.XPathSelectElements("./response/payment[@loanType='thirtyYearFixed']");
var query = from payment in  node             
            select new
            {
                rate                        = payment.XPathSelectElement("rate"),
                monthlyPrincipalAndInterest = payment.XPathSelectElement("monthlyPrincipalAndInterest"),
                monthlyMortgageInsurance    = payment.XPathSelectElement("monthlyMortgageInsurance")
            };
    foreach (var v in query)
    {
        Console.WriteLine(v.rate.Value);
        Console.WriteLine(v.monthlyPrincipalAndInterest.Value);
        Console.WriteLine(v.monthlyMortgageInsurance.Value);
    }