元素的xml节点

时间:2012-10-28 18:08:29

标签: c# xml

下面是我需要通过C#提取数据的xml文件的示例。这是我第一次阅读xml文件和使用xml的初学者。任何人都有一个示例,我将如何找到/加载Export_B的fieldorder值?

<?xml version="1.0" encoding="utf-8"?>
<Config>
    <OutFolderCSV>c:\Output\2012\upload_Files</OutFolderCSV>
    <OutFolderImage>c:\Output\2012\NM_Scorecard_Images</OutFolderImage>
    <PathOutLogFile>c:\Output\2012\Log\Matches.log</PathOutLogFile>
    <FieldSeparator>,</FieldSeparator>
    <ExportFile>
    <Name>Export_A</Name>
    <FieldOrder>matchID</FieldOrder>
    <FieldOrder>contactID</FieldOrder>
        <FieldOrder>stageID13</FieldOrder>
        <FieldOrder>stringScore1a</FieldOrder>
        <FieldOrder>xScore1a</FieldOrder>
    <FieldOrder>stageID14</FieldOrder>
        <FieldOrder>stringScore1b</FieldOrder>
        <FieldOrder>xScore1b</FieldOrder>
    <FieldOrder>stageID15</FieldOrder>
        <FieldOrder>stringScore1c</FieldOrder>
        <FieldOrder>xScore1c</FieldOrder>
    </ExportFile>
    <ExportFile>
    <Name>Export_B</Name>
    <FieldOrder>matchID</FieldOrder>
    <FieldOrder>contactID</FieldOrder>
        <FieldOrder>stageID16</FieldOrder>
        <FieldOrder>stringScore1a</FieldOrder>
        <FieldOrder>xScore1a</FieldOrder>
    <FieldOrder>stageID17</FieldOrder>
        <FieldOrder>stringScore1b</FieldOrder>
        <FieldOrder>xScore1b</FieldOrder>
    <FieldOrder>stageID18</FieldOrder>
        <FieldOrder>stringScore1c</FieldOrder>
        <FieldOrder>xScore</FieldOrder>
   </ExportFile>
</Config>

2 个答案:

答案 0 :(得分:0)

使用LINQ to XML:

var doc = XDocument.Load(@"c:\path\to\file.xml");
var fieldOrders =
    from exportFile in doc.Descendants("ExportFile")
    where (string)exportFile.Element("Name") == "Export_B"
    from fieldOrder in exportFile.Elements("FieldOrder")
    select (string)fieldOrder;

答案 1 :(得分:-1)

我写了一篇文章 http://www.codeproject.com/Articles/33769/Basics-of-LINQ-Lamda-Expressions

使用XDocument对象在XML上。

您可以使用

轻松解析XML
XDocument.Load(filepath)

请阅读XLinq部分以解析对象。

编辑:

您可以使用以下代码更改Export_B的值:

var document = XDocument.Load(filepath)
var exportFiles = document.Descandants("ExportFile");
List<XElement> list = new List<XElement>();
foreach(var element in exportFiles)
{
     list.Add(element);

// Now you can do element.Element("Name") to get the name. Put a breakpoint on this, you can get the reference of all underlying objects.
    }