0

XDocument と XElement を使用して XML ドキュメントから値を取得しようとしています。3 つの値を取得しようとしていますが、それらを返そうとすると、1 つの値としてマージされます。これが私が検索している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 ファイルに値があり、その前に 1 つの長い値が返されました。outputPath、outputPath_today、およびログの値を別々に返す方法について混乱しています。どんな助けでも大歓迎です。

4

1 に答える 1

1

試す:

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_today持ちlog、値は XML から取り込まれます。

于 2013-01-21T21:54:21.640 に答える