如何对文件进行排序并移动到其受人尊敬的目录 (c#)
How to sort files and move to their respectable directory (c#)
所以我遇到的问题是,如果 xml 文件包含 "ONE",那么它应该移至贷方目录,否则移至借方目录。这是我目前的解决方案:
private void SplitAndMoveCreditCamts(FileInfo f)
{
if (v.Elements().Contains(x => x.Value == "ONE"))
WriteToDirectory(v, "ONE\");
else
WriteToDirectory(v, "TWO\");
}
它确实将文件移动到 TWO 目录。这意味着 "WriteToDirectory" 方法有效,但忽略了 "ONE" 条件。我相信错误就在那里。
我认为您的问题出在元素行 (v.Elements().Contains(x => x.Value == "ONE"))
最适合您的解决方案是制作两个单独的方法,一个和两个,其中调用您的 SplitAndMoveONE
。
private void SplitAndMoveONE(FileInfo f)
{
XElement[] els = GetXmlMessages(f.Name);
foreach (var v in els)
{
XNamespace ns = v.Name.Namespace;
bool exists = v.Descendants(ns + "ONE")
.Select(item => item.Value);
if (exists)
WriteToDirectory(v, "ONE\");
else
// give error message
}
}
命名空间对于在您的标签中查找元素至关重要。这同样适用于两个。
所以我遇到的问题是,如果 xml 文件包含 "ONE",那么它应该移至贷方目录,否则移至借方目录。这是我目前的解决方案:
private void SplitAndMoveCreditCamts(FileInfo f)
{
if (v.Elements().Contains(x => x.Value == "ONE"))
WriteToDirectory(v, "ONE\");
else
WriteToDirectory(v, "TWO\");
}
它确实将文件移动到 TWO 目录。这意味着 "WriteToDirectory" 方法有效,但忽略了 "ONE" 条件。我相信错误就在那里。
我认为您的问题出在元素行 (v.Elements().Contains(x => x.Value == "ONE"))
最适合您的解决方案是制作两个单独的方法,一个和两个,其中调用您的 SplitAndMoveONE
。
private void SplitAndMoveONE(FileInfo f)
{
XElement[] els = GetXmlMessages(f.Name);
foreach (var v in els)
{
XNamespace ns = v.Name.Namespace;
bool exists = v.Descendants(ns + "ONE")
.Select(item => item.Value);
if (exists)
WriteToDirectory(v, "ONE\");
else
// give error message
}
}
命名空间对于在您的标签中查找元素至关重要。这同样适用于两个。