Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将XmlNodeList强制转换或转换为XmlNodeList_C#_Xml_C# 4.0_Xml Parsing_C# 3.0 - Fatal编程技术网

C# 将XmlNodeList强制转换或转换为XmlNodeList

C# 将XmlNodeList强制转换或转换为XmlNodeList,c#,xml,c#-4.0,xml-parsing,c#-3.0,C#,Xml,C# 4.0,Xml Parsing,C# 3.0,我的代码有问题,希望能得到你的帮助。我有一个XmlNodeList(GetDetailPageSectionBySA)类型的方法,现在该方法被用作另一个方法中的参数之一。但该方法(GetServiceAccountusageAndBillingDetail)需要该参数的XmlNode类型(saDetailedPageNode)。如果我将该参数的数据类型更改为XmlNodeList,那么它会把一大堆只可以使用XmlNode的东西搞砸 为什么我不将第一个方法(GetDetailPageSection

我的代码有问题,希望能得到你的帮助。我有一个XmlNodeList(GetDetailPageSectionBySA)类型的方法,现在该方法被用作另一个方法中的参数之一。但该方法(GetServiceAccountusageAndBillingDetail)需要该参数的XmlNode类型(saDetailedPageNode)。如果我将该参数的数据类型更改为XmlNodeList,那么它会把一大堆只可以使用XmlNode的东西搞砸

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

所以我只是想知道是否有任何方法可以将XmlNodeList转换或强制转换为XmlNodeList,如果有,是如何实现的

foreach (GetBillForCAResponse eBillResponse in eBillResponseList)
{
   var statementDetailsResponse = GetStatementDetails(
       new GetStatementDetailsRequest
       {
           BatchId = eBillResponse.BatchId,
           CustomerAccountId = eBillResponse.CA.ToString("000000000"),
           StatementId = eBillResponse.CAS_NUM.ToString("0000")
       });

   string xmlBill = statementDetailsResponse.StatementAsXML.ToString();
   var document = new XmlDocument();
   document.LoadXml(xmlBill);

   ****var saDetailedPageNode = XmlBillParser.GetDetailPageSectionBySA(requestSA, xmlBill);// This is the method of type XmlNodeList
   if (saDetailedPageNode == null) continue;

   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);// This is where the invalid argument is because saDetailedPageNode should be of type XmlNode
   response.Add(customerBill);
}

我已经把****放在了问题所在的地方,以及对这些行的评论。我是一个初学者,在编码和任何帮助将是巨大的。感谢advanced。

没有将
XmlNodeList
强制转换为
xmlnodel
这样的事情。顾名思义,
XmlNodeList
xmlnodel
s的列表。因此,如果您想对列表中的
XmlNode
s执行一些操作,您必须遍历列表并对该列表中的每个节点执行一些操作

在您的情况下,我怀疑
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);
    }
}