2013-09-29 112 views
0
<response> 
    <payment loanType="thirtyYearFixed"> 
    <rate>4.09</rate> 
    <monthlyPrincipalAndInterest>410</monthlyPrincipalAndInterest> 
    <monthlyMortgageInsurance>54</monthlyMortgageInsurance> 
    </payment> 
</response> 

我的问题是我如何从费率,monthlyPrincipalAndInterest和MonthlyMortgageInsurance获取信息?我想尽不同的方式和之前发布这个使用下面的代码作为我的最后的手段使用的XDocument都已​​停止如何使用C#中的XmlDocument在属性元素中的子元素中获取XML信息?

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

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

我有一种感觉,这将是我看过的一些小片,但我不仅用完了时间不足的选项。

回答

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); 
    } 
+0

这将执行的很好!如果只有我没有犯XDocument而不是XmlDocument的巨大错误......回到我的绘图板。 –

+0

如果我用我的HTTP响应使用这个方法,它会出现空,如果我只使用生成的文件的URL,那么它出于某种原因显示0。 –

+0

问题已解决。显然,我的解析中没有错误,但是在我的HTTP请求中出现错误。谢谢您的帮助!上面的代码完全可以用于获取所需的信息。 –

相关问题