【问题标题】:Concat While loopingConcat While 循环
【发布时间】:2014-08-08 13:25:57
【问题描述】:

我有一个方法可以通过 xpath 解析 XML 的开始日期和结束日期。

List<string> GetWorkNodeDate = new List<string>();
List<string> GetWorkNodeEstablisment = new List<string>();

XmlNodeList WorkNodeListDate = XmlResponceDoc.SelectNodes("/response/employees/employee/starttime | /response/employees/employee/endtime");

if (WorkNodeListDate != null)
{
    foreach (XmlNode StartDate in WorkNodeListDate)
    {
        string GetStartDate = StartDate.InnerText;
        GetWorkNodeDate.Add(GetStartDate);
    }
}

我遇到的问题是,每次它从存储在 xml 中的许多循环中执行两次以收集开始和结束日期时,我想将它们连接两个值,然后将它们存储到列表中。我只是想知道实现这一目标的最佳方法是什么?感谢您提供的任何帮助。

【问题讨论】:

  • "每次循环两次"为什么以及在哪里?
  • 您能否展示一些示例 XML 数据以便我们试用?
  • 目前列表的问题是一个接一个地存储开始和结束日期,我不知道如何在进程进行时或之后连接它们
  • 如何通过使用 XPath /response/employees/employee 和简单地访问 starttimeendtime 元素来迭代每个员工?
  • @Martin Liversage 非常感谢您的帮助

标签: c# xml string list xpath


【解决方案1】:

我建议您改用 for 循环:

for (int i = 0; i < WorkNodeListDate.Count; i = i + 2)
{
    string startAndStoptime = WorkNodeListDate[i].InnerText + "..." + WorkNodeListDate[i + 1];
}

您可以访问开始时间和停止时间并将它们放在一起。显然,您必须自己将它们存储在某个地方。

迭代器每次都增加 2,因为这样您将访问另一个开始时间。另请注意,它会检查 i-1 是否小于计数。这是因为 i+1 不是另一个开始时间,而是一个停止时间。因此,当列表“用完”开始时间时,必须停止增加 i。

结果将是:starttime...stoptime

【讨论】:

    猜你喜欢
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 2011-08-09
    相关资源
    最近更新 更多