2

XML:

<CONFIGURATION>
<Files>
    <File>D:\Test\TestFolder\TestFolder1\TestFile.txt</File>
    <File>D:\Test\TestFolder\TestFolder1\TestFile01.txt</File>
    <File>D:\Test\TestFolder\TestFolder1\TestFile02.txt</File>
    <File>D:\Test\TestFolder\TestFolder1\TestFile03.txt</File>
    <File>D:\Test\TestFolder\TestFolder1\TestFile04.txt</File>
</Files>
<SizeMB>3</SizeMB>
<BackupLocation>D:\Log backups\File backups</BackupLocation>
</CONFIGURATION>

コード:

private void btnLinq_Click(object sender, EventArgs e)
    {
        queryData(@"D:\WatchMe1\backupconfig1.xml");
    }

static void queryData(string xmlFile)
    {
        var xdoc = XDocument.Load(xmlFile);
        var configuration = xdoc.Element("CONFIGURATION");
        string sizeMB = configuration.Element("SizeMB").Value;
        string backupLocation = configuration.Element("BackupLocation").Value;
        //need a code here to check if element <File> exist before executing the file array
        string[] files = configuration.Element("Files").Elements("File").Select(c => c.Value).ToArray();

        foreach (string file in files)
        {
            Console.WriteLine(file);
        }
    }

上記のxmlを編集するxmlライタープログラムがあります。Files要素をFolder要素に変更できます。値(ファイルの場所)を読み取り、それを使って何かを行う別のプログラムがあります。最初に、要素がFilesまたはFolders要素であるかどうかを確認する必要があります。

4

2 に答える 2

11

次のようなもので要素の存在を確認できます

if(configuration.Elements("...").Any()){...}

しかし、ここで何を尋ねているのか正確にはわかりません...

于 2012-09-05T07:34:04.210 に答える
0

これはあなたがしたいことかもしれません:

if(configutation.Elements.First("Files") != null)
{
    string[] files = configuration.Element("Files").Elements("File").Select(c => c.Value).ToArray();
}

お役に立てれば!

于 2012-09-05T07:36:26.347 に答える