с помощью сообщества переполнения стека я смог взять некоторые данные из документа XML и добавить их в список, используя следующий код.
String URLString = "https://api3.libcal.com/api_hours_grid.php?iid=4246&format=xml&weeks=1&systemTime=0";
XDocument xdoc = new XDocument();
xdoc = XDocument.Load(URLString);
var location = (from p in xdoc.Descendants("location")
from s in p.Descendants("week").Elements()
select new
{
CampusName = (string)p.Element("name"),
WeekD = (string)s.Element("date"),
OpenHours = (string)s.Element("rendered"),
Day = s.Name.LocalName
}).ToList();
это прекрасно работает, и я могувывести в неупорядоченный список со следующим
string currentLocation = "";
foreach (var item in location)
{
if (item.CampusName != currentLocation)
{
<h2>@item.CampusName</h2>
currentLocation = @item.CampusName;
}
<ul>
<li>@item.WeekD - @item.OpenHours</li>
</ul>
}
, однако, после рассмотрения моих требований, я чувствую, что данные будут лучше отображаться с использованием таблицы HTML.Я пробовал несколько разных способов, используя String Builder для достижения этого
string dayStop = "Sunday";
StringBuilder sb = new StringBuilder();
sb.Append("<TABLE>\n");
sb.Append("<TR>\n");
foreach (var item in location)
{
if (item.Day != dayStop)
{
sb.Append("<TH>\n");
sb.Append(@item.Day);
sb.Append("</TH>\n");
//dayStop = @item.Day;
}
}
sb.Append("</TR>\n");
sb.Append("<TR>\n");
sb.Append("<TD>\n");
sb.Append(@item.CampusName);
sb.Append("</TD>\n");
sb.Append("<TD>\n");
sb.Append(@item.OpenHours);
sb.Append("</TD>\n");
sb.Append("</TR>\n");
sb.Append("</TABLE > ");
}
Html.Raw(sb)
, но он не работает.Мне бы хотелось, чтобы значение @ item.Day заполняло значение TH, но поскольку каждый элемент в моем списке содержит значение дня значения для каждого @ item.CampusName, я получаю целую кучу ненужных значений @ item.Day иЯ чувствую, что foreach здесь не правильный ответ.В итоге я хотел бы получить что-то вроде следующего фрагмента:
<table>
<tr>
<th>
Location
</th>
<th>
Sunday
</th>
<th>
Monday
</th>
<th>
Tueday
</th>
</tr>
<tr>
<td>
Campus 1
</td>
<td>
9 - 5
</td>
<td>
9 - 5
</td>
<td>
9 - 5
</td>
</tr>
<tr>
<td>
Campus 2
</td>
<td>
9 - 5
</td>
<td>
9 - 5
</td>
<td>
9 - 5
</td>
</tr>
</table>