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

我的问题是如何从 rate、monthlyPrincipalAndInterest 和monthlyMortgageInsurance 中获取信息?我已经尝试了各种不同的方式,并在发布此之前使用以下代码作为我最后的手段停止使用 XDocument:

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

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

我有一种感觉,这将是我看过的一小部分,但我不仅没有选择余地,而且也没有时间了。

4

1 回答 1

1

也许尝试这样的事情:

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);
    }
于 2013-09-29T03:31:32.473 回答