【问题标题】:Check if an element exists in XML检查 XML 中是否存在元素
【发布时间】:2012-09-05 07:28:59
【问题描述】:

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 元素。我有另一个程序读取值(文件位置)并对其进行处理,我必须首先检查元素是文件还是文件夹元素。

【问题讨论】:

  • Check if XML Element exists 的可能重复项
  • 我不知道我是否理解你,但是当你尝试检查一个元素是否包含任何元素时,试试这个:bool check = myXml.Elements("nameOfElement").Any()。您还可以读取元素并检查它是否为空。
  • @BigYellowCactus:他没有使用 Xpath 方法。他想使用 Linq。所以也许它不是重复的?

标签: c# xml linq-to-xml


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    这可能是你想要做的:

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

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多