簡體   English   中英

讀取XML節點並添加到datagrid

[英]Reading XML nodes and add to datagrid

我有一個帶有設置的XML文件。 我想讀取所有CollectionEntry節點的namevalue ,並將它們添加到DataGrid。

我認為一個好方法是使用一個List並用XML文件的名稱和值填充它,然后將其添加到DataGrid中,如下所示:

List<Buffer> buffers = new List<Buffer>();
buffers.Add(new Buffer(){bufferName="username_testuser1",bufferValue="testuser2"});
bufferGrid.DataSource = buffers;

public class Buffer
{
  public string bufferName { get; set; }
  public string bufferValue { get; set; }
}

但是,如何讀取特定的CollectionEntry值? 這是XML文件:

<?xml version="1.0" encoding="utf-8"?>
<Settings xmlns="Namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Category name="Commander">
    <Category name="ManualTestExecution">
      <Setting name="WindowLocation" legacyPath="Commander.GUI.ManualTestExecution.WindowLocation">336,263</Setting>
      <Setting name="WindowSize" legacyPath="Commander.GUI.ManualTestExecution.WindowSize">732,451</Setting>
    </Category>
  </Category>
  <Category name="Engine">
    <Setting name="Key Delay" legacyPath="BaseSettings.keyDelay">1</Setting>
    <Setting name="Wait Intermediate" legacyPath="BaseSettings.waitIntermediate">5000</Setting>
    <Setting name="Report Successful Execution of" legacyPath="XML.OutputLogLevel">2</Setting>
    <Collection name="Buffer" legacyPath="Buffer.Local">
      <CollectionEntry name="username_testuser1">testuser2</CollectionEntry>
      <CollectionEntry name="password_testuser1">!Welcome099</CollectionEntry>
      <CollectionEntry name="username_testuser2">testuser2</CollectionEntry>
    </Collection>
  </Category>
</Settings>

使用LINQ to XML,您可以使用

XNamespace df = "Namespace";

List<Buffer> buffers = new List<Buffer>(from entry in XDocument.Load("yourFile.xml").Descendants(df + "CollectionEntry") select new Buffer( bufferName = (string)entry.Attribute("name"), bufferValue = (string)entry));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM