C# 按元素划分的xml节点
下面是一个xml文件示例,我需要通过C#提取数据。这是我第一次阅读xml文件,也是xml初学者。有没有人举个例子说明我如何查找/加载导出_B的fieldorder值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 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将其添加到文件中。那就行了。