【发布时间】:2015-10-22 02:55:22
【问题描述】:
我遇到了一个问题,我在一个 xml 账单中循环遍历多个相同的节点。当我循环遍历这些值并相应地合并它们时,我没有意识到数据类型是一个字符串。我需要一些帮助来合并/汇总作为字符串的数字。循环包含节点中包含的所有值,但我只显示我需要帮助的部分。
private static ServiceAddressBillDetail GetServiceAccountUsageAndBillingDetail(string requestSA, string xmlBill, XmlNodeList detailPageNodes)
{
var saBillDetail = new ServiceAddressBillDetail();
saBillDetail.UsageServiceName = requestSA;
foreach (XmlNode detailPageNode in detailPageNodes)
{
if (totalSvcUseXMLNodes.Count > 0 && totalSvcUseXMLNodes[0].HasChildNodes)
{
var totalSvcNode = totalSvcUseXMLNodes[0].SelectSingleNode("IRBILGP_SA_TOTAL_KWH.SERVICE_ACCOUNT_STATEMENT");
if (totalSvcNode == null)
{
totalSvcNode = totalSvcUseXMLNodes[0].SelectSingleNode("IRBILGU_US_KWH_USAGE.USAGE");
}
saBillDetail.TotalServiceUsage = totalSvcNode.InnerText;
}
}
}
这就是我拥有它的方式,我认为数据类型是一个字符串。这种方式只是将值连接在一起。
private static ServiceAddressBillDetail GetServiceAccountUsageAndBillingDetail(string requestSA, string xmlBill, XmlNodeList detailPageNodes)
{
var saBillDetail = new ServiceAddressBillDetail();
saBillDetail.UsageServiceName = requestSA;
foreach (XmlNode detailPageNode in detailPageNodes)
{
if (totalSvcUseXMLNodes.Count > 0 && totalSvcUseXMLNodes[0].HasChildNodes)
{
var totalSvcNode = totalSvcUseXMLNodes[0].SelectSingleNode("IRBILGP_SA_TOTAL_KWH.SERVICE_ACCOUNT_STATEMENT");
if (totalSvcNode == null)
{
totalSvcNode = totalSvcUseXMLNodes[0].SelectSingleNode("IRBILGU_US_KWH_USAGE.USAGE");
}
saBillDetail.TotalServiceUsage += totalSvcNode.InnerText;
}
}
}
然后我尝试了类似的方法,我使用 int.Parse 并将结果添加回结果。但是我在result = result + int.Parse(totalSvcNode.InnerText); 中的第二个结果出现错误,说它是未分配的变量
private static ServiceAddressBillDetail GetServiceAccountUsageAndBillingDetail(string requestSA, string xmlBill, XmlNodeList detailPageNodes)
{
var saBillDetail = new ServiceAddressBillDetail();
saBillDetail.UsageServiceName = requestSA;
foreach (XmlNode detailPageNode in detailPageNodes)
{
if (totalSvcUseXMLNodes.Count > 0 && totalSvcUseXMLNodes[0].HasChildNodes)
{
var totalSvcNode = totalSvcUseXMLNodes[0].SelectSingleNode("IRBILGP_SA_TOTAL_KWH.SERVICE_ACCOUNT_STATEMENT");
if (totalSvcNode == null)
{
totalSvcNode = totalSvcUseXMLNodes[0].SelectSingleNode("IRBILGU_US_KWH_USAGE.USAGE");
}
int result;
//saBillDetail.TotalServiceUsage += totalSvcNode.InnerText;
result = result + int.Parse(totalSvcNode.InnerText);
saBillDetail.TotalServiceUsage = result.ToString();
}
}
}
我被这个逻辑困住了,因为它不是两个不同的 TotalServiceUsage 我加在一起。它为找到的每个节点添加了相同的 TotalServiceUsage。我是一个相当新的程序员,任何帮助将不胜感激。
【问题讨论】:
标签: c# xml c#-4.0 xml-parsing