将XmlNodeList转换或转换为XmlNode

时间:2015-07-08 21:40:22

标签: c# xml c#-4.0 xml-parsing c#-3.0

我的代码存在问题,希望能得到您的帮助。我有一个类型为XmlNodeList(GetDetailPageSectionBySA)的方法,现在该方法被用作另一个方法中的参数之一。但是该方法(GetServiceAccountusageAndBillingDetail)期望该参数的一种XmlNode(saDetailedPageNode)。如果我将该数据类型更改为该参数的XmlNodeList,那么它会混淆一大堆内容,只能使用XmlNode。

为什么我不将第一种方法(GetDetailPageSectionBySA)的类型更改为XmlNode并解决我问的所有问题?因为该类型只能返回一个节点,并且该方法返回节点集合,需要使用XmlNodeList。

所以我只是想知道是否有任何方法可以将XmlNodeList转换或转换为XmlNode,如果是这样,它是如何完成的?

{{1}}

我已将问题放在****以及对这些问题的评论。我是编码的初学者,任何帮助都会很棒。谢谢你提前。

1 个答案:

答案 0 :(得分:0)

没有将XmlNodeList投射到XmlNode这样的事情。顾名思义,XmlNodeListXmlNode的列表。因此,如果您想对列表中的XmlNode执行某些操作,则必须浏览列表并对该列表中的每个节点执行某些操作。

在您的情况下,我怀疑GetDetailPageSectionBySA可能会从帐单中返回多个部分。如果是这样,您可以添加foreach循环:

foreach (GetBillForCAResponse eBillResponse in eBillResponseList)
{
   // removed code for brevity

   foreach(var saDetailedPageNode =x mlBillParser.GetDetailPageSectionBySA(requestSA, xmlBill)
   {
       var customerBill = new CustomerBill();
       customerBill.IsSurepay = XmlBillParser.GetSurepayFlagFromBill(document);
       customerBill.ServiceAddress = XmlBillParser.GetServiceAddress(requestSA, document);
       customerBill.MonthName = XmlBillParser.GetBillStatementDate(requestSA, xmlBill);
       customerBill.EqCurPlanBal = XmlBillParser.GetEqualizerCurrentPlanBalance(document);
       customerBill.EqPymntDue = XmlBillParser.GetEqualizerPaymentDue(document);

       customerBill.Service = GetServiceAccountUsageAndBillingDetail(requestSA, xmlBill, saDetailedPageNode)
       response.Add(customerBill);
    }
}