C# 将XmlNodeList强制转换或转换为XmlNodeList
我的代码有问题,希望能得到你的帮助。我有一个XmlNodeList(GetDetailPageSectionBySA)类型的方法,现在该方法被用作另一个方法中的参数之一。但该方法(GetServiceAccountusageAndBillingDetail)需要该参数的XmlNode类型(saDetailedPageNode)。如果我将该参数的数据类型更改为XmlNodeList,那么它会把一大堆只可以使用XmlNode的东西搞砸 为什么我不将第一个方法(GetDetailPageSectionBySA)的类型更改为XmlNode,并解决您提出的所有问题?因为该类型只能返回一个节点,而该方法返回一个节点集合,并且需要使用XmlNodeList 所以我只是想知道是否有任何方法可以将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
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);
}
}