【发布时间】:2015-08-21 09:39:11
【问题描述】:
我需要能够使用循环在 XDocument 中动态创建“n”个 XElement,具体取决于在目录中找到的文件数。
我的 WIP 基本项目代码可能有点长,无法粘贴到此处,因此我已将其添加到 paste.org - here
您将在第 73-91 行之间看到我有一个 foreach 循环,它搜索目录及其子目录并定位其中包含的所有文件的路径。 我知道这是我用过的自己的作品:
int x = filePaths.Length;
x 的输出与给定目录中的文件数匹配。
代码的主要部分也可以工作,并根据我的需要创建一个 HTML 文件,但我还需要它在我放置的第 215 行之间动态创建“n”个 XElement:
/// **** NEED TO INSERT LOOP HERE TO DYNAMICALLY CREATE NUMBER OF ELEMENTS DEPENDING ON NUMBER OF FILES IN DIRECTORY ****
就在 <TR> 标记和第 280 行打开之前,就在 <TR> 标记关闭之后,因此在指定目录中找到的每个文件都有自己的 <TABLE> 行。
我已经记不清有多少种方法尝试通过在整个代码中移动循环来实现这一点,但总是遇到大量错误。
最初我认为只需将循环放在第 215 行的代码中就可以了,但这样做会导致许多错误,例如丢失:
- ;
- }
等等……
现在我完全被卡住了。
我正在尝试在 C# 中模拟我前段时间使用 WMIC 制作的批处理文件,该文件运行良好但功能有限,我希望添加更多功能,这就是 C# 的用武之地。
批处理文件使用循环,就像我在这里尝试的那样,完全没有任何问题。
这是来自 WMIC 批处理文件的循环:
(FOR /f "delims=" %%a IN ('dir /b /a-d /s /n "C:\Users\1CM69\Pics & Vids\Archives\Family\2002"') DO (
FOR /f "tokens=1-3*" %%x IN ('dir /a-d /tc "%%~a"^|findstr "^[0-9]"') DO (
for /f %%c in ("%%~ta") do (
ECHO ^<TR^>^<td style="border-width: 1px;padding: 10px;border-style: inset;border-color: gray;background-color: white;" align="center" valign="middle"^>^<a href="%%a" target="_new"^>^<img src="%%a" width="100px" border="0"^>^</a^>^</TD^>^<td style="border-width: 1px;padding: 10px;border-style: inset;border-color: gray;background-color: white;" align="left" valign="middle"^>^<B^>%%~nxa^</B^>^</TD^>^<td style="border-width: 1px;padding: 10px;border-style: inset;border-color: gray;background-color: white;" align="center" valign="middle"^>^<B^>%%~c^</B^>^</TD^>^<td style="border-width: 1px;padding: 10px;border-style: inset;border-color: gray;background-color: white;" align="center" valign="middle"^>^<B^>%%x^</B^>^</TD^>^</TR^> >> 2002.html))))
我发现 Create XML with XDocument with a variable number of XElements using for loop 会四处搜索 & 最初是有希望的,虽然我确实让它根据文件数动态创建“n”个 XElement,但变量 DateTaken 只显示了最后一个文件的值在目录中,所以我有一个 <TABLE> 和 68 行 <TR>,在我使用的测试目录的情况下,它们都包含从循环找到的最终文件中检索到的值。
任何帮助将不胜感激。
问候..,
【问题讨论】:
标签: c# html foreach linq-to-xml xelement