如何使用 XDocument 和 XElement 将 XML 作为单独的值返回

本文关键字:单独 返回 XML XDocument 何使用 XElement | 更新日期: 2023-09-27 17:55:19

我正在尝试使用XDocument和XElement从XML文档中获取值。我正在尝试获取三个值,但是当我尝试返回它们时,它们会合并为一个值。这是我正在搜索的 XML:

<create_maint_traveler>     
<Paths>
        <outputPath value="D:'Intercim'DNC_Share'itcm'DataInput'MCDHeaderDrop'" />
        <outputPath_today value="D:'Intercim'DNC_Share'itcm'DataInput'Today'" />
        <log value="D:'Intercim'DNC_Share'itcm'Log'CreateMaintLog.log" />
    </Paths>
</create_maint_traveler>

以下是我查询值的方式:

XDocument config = XDocument.Load(XML);
            foreach (XElement node in config.Root.Elements("Paths"))
            {
                if (node.Name == "outputPath") outputPath = node.Value;
                if (node.Name == "outputPath_today") outputPath = node.Value;
                if (node.Name == "log") outputPath = node.Value;
            }

当我输出到文件时,我发现返回的值是

D:'Intercim'DNC_Share'itcm'DataInput'MCDHeaderDrop'D:'Intercim'DNC_Share'itcm'DataInput'Today'D:'Intercim'DNC_Share'itcm'Log'CreateMaintLog.log

否则什么都不会返回。我在标记之外的XML文件中具有值,该标记返回了一个长值。我对如何分别返回输出路径、outputPath_today和日志值感到困惑。任何帮助,不胜感激。

如何使用 XDocument 和 XElement 将 XML 作为单独的值返回

尝试:

var xDoc = XDocument.Load(XML);
var paths = xDoc.Root.Elements("Paths");
var res = from p in paths
          select new
                     {
                         outputPath = p.Element("outputPath").Attribute("value").Value,
                         outputPath_today = p.Element("outputPath_today").Attribute("value").Value,
                         log = p.Element("log").Attribute("value").Value
                    };
 foreach(path in res)
 {
      System.Console.WriteLine(path.outputPath);
      System.Console.WriteLine(path.outputPath_today);
      System.Console.WriteLine(path.log);
      // or do anything you want to do with those properties
 }

您将获得outputPathoutputPath_todaylog的值,并IEnumerable匿名对象。这些对象每个对象都有属性outputPathoutputPath_todaylog,其值是从XML填充的。