C# 按元素划分的xml节点

C# 按元素划分的xml节点,c#,xml,C#,Xml,下面是一个xml文件示例,我需要通过C#提取数据。这是我第一次阅读xml文件,也是xml初学者。有没有人举个例子说明我如何查找/加载导出_B的fieldorder值 <?xml version="1.0" encoding="utf-8"?> <Config> <OutFolderCSV>c:\Output\2012\upload_Files</OutFolderCSV> <OutFolderImage>c:\Outpu

下面是一个xml文件示例,我需要通过C#提取数据。这是我第一次阅读xml文件,也是xml初学者。有没有人举个例子说明我如何查找/加载导出_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>

c:\Output\2012\upload\u文件
c:\Output\2012\NM\U记分卡\U图像
c:\Output\2012\Log\Matches.Log
,
出口A
火柴
联系人ID
舞台13
stringScore1a
xScore1a
阶段14
stringScore1b
xScore1b
舞台15
stringScore1c
xScore1c
出口
火柴
联系人ID
舞台16
stringScore1a
xScore1a
舞台17
stringScore1b
xScore1b
舞台18
stringScore1c
xScore
我写了一篇文章

在XML上使用XDocument对象

您可以使用

XDocument.Load(filepath)
请阅读XLinq部分以解析对象

编辑:

您可以使用以下代码更改导出_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.
    }
var document=XDocument.Load(文件路径)
var exportFiles=document.descands(“ExportFile”);
列表=新列表();
foreach(exportFiles中的var元素)
{
列表。添加(元素);
//现在您可以执行element.element(“Name”)来获取名称。在此设置断点,您可以获取所有底层对象的引用。
}
使用LINQ到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;

看看这个问题:谢谢。我可能没有解释得最好。我只想将FieldOrder加载到可在程序中使用的内部列表中。但由于列出了多个导出文件,我不确定如何指向正确的导出名称,然后将该导出名称的FieldOrder加载到程序内存中…是否要枚举导出文件对象?您可以枚举ExportFile并获取FieldOrders.Abhishek的每个底层集合的引用-我正在尝试使用,但得到一个错误。“无法将void分配给文档上隐式类型的局部变量”。我的代码类似于:XmlDocument XDocument=newxmldocument();var document=XDocument.Load(profilePath);var exportFiles=document.descands(“ExportFile”)@BuckeyeJane您需要创建XDocument而不是XmlDocument的对象。XDocument是Linq到XML的转换。请检查一下。我不知道你在用linq。以前也没用过。但在进一步研究时,我遗漏了:使用System.Xml.Linq;我会继续的谢谢!谢谢Jeff-var文档正在创建一个错误。。。“名称“XDocument”在当前上下文中不存在”。知道为什么会发生这种情况吗?请将System.Code.dll添加到项目中,并使用System.Linq将其添加到文件中。那就行了。