C# 检查XML中是否存在元素

C# 检查XML中是否存在元素,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,XML: D:\Test\TestFolder\TestFolder1\TestFile.txt D:\Test\TestFolder\TestFolder1\TestFile01.txt D:\Test\TestFolder\TestFolder1\TestFile02.txt D:\Test\TestFolder\TestFolder1\TestFile03.txt D:\Test\TestFolder\TestFolder1\TestFile04.txt 3. D:\Log backup

XML:


D:\Test\TestFolder\TestFolder1\TestFile.txt
D:\Test\TestFolder\TestFolder1\TestFile01.txt
D:\Test\TestFolder\TestFolder1\TestFile02.txt
D:\Test\TestFolder\TestFolder1\TestFile03.txt
D:\Test\TestFolder\TestFolder1\TestFile04.txt
3.
D:\Log backups\File backups
代码:

private void btnLinq_单击(对象发送者,事件参数e)
{
queryData(@“D:\WatchMe1\backupconfig1.xml”);
}
静态void queryData(字符串xmlFile)
{
var xdoc=XDocument.Load(xmlFile);
var配置=xdoc.Element(“配置”);
字符串sizeMB=configuration.Element(“sizeMB”).Value;
字符串backupLocation=configuration.Element(“backupLocation”).Value;
//在执行文件数组之前,这里需要一个代码来检查元素是否存在
string[]files=configuration.Element(“files”).Elements(“File”).Select(c=>c.Value.ToArray();
foreach(文件中的字符串文件)
{
Console.WriteLine(文件);
}
}

我有一个xml编写器程序来编辑上面的xml。文件元素可以更改为文件夹元素。我有另一个程序读取值(文件位置)并对其进行处理,我必须首先检查元素是否是文件或文件夹元素。

您可以使用类似的方法检查元素是否存在

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);
        }
    }

但我不确定你到底在问什么…

这可能是你想要做的:

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

希望这有帮助

我不知道是否理解您的意思,但当您尝试检查某个元素是否包含任何元素时,请尝试以下操作:bool check=myXml.elements(“nameofement”).any()。您还可以读取元素并检查它是否为null。@BigYellowCactus:他没有使用Xpath方法。他想用Linq。那么也许它不是复制品?
if(configuration.Elements("...").Any()){...}
if(configutation.Elements.First("Files") != null)
{
    string[] files = configuration.Element("Files").Elements("File").Select(c => c.Value).ToArray();
}