0

下面是我需要通过 C# 提取数据的 xml 文件的示例。这是我第一次阅读 xml 文件和 xml 的初学者。任何人都有我如何查找/加载 Export_B 的字段顺序值的示例?

<?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>
4

2 回答 2

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;
于 2012-10-28T18:27:48.623 回答
-1

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

在 XML 上使用 XDocument 对象。

您可以使用轻松解析 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.
    }
于 2012-10-28T18:11:44.283 回答