如何在 C# 中从 XML 中读取数据?

How can I read data from this XML in c#?

    <?xml version="1.0"?>
<!--
** DO NOT EDIT THIS FILE.
** If you make changes to this file while any VirtualBox related application
** is running, your changes will be overwritten later, without taking effect.
** Use VBoxManage or the VirtualBox Manager GUI to make changes.
-->
<VirtualBox xmlns="http://www.virtualbox.org/" version="1.12-windows">
  <Global>
    <ExtraData>
      <ExtraDataItem name="GUI/GroupDefinitions/" value="m=254e0435-0f3f-445b-a35d-1f6d774a0fc3"/>
      <ExtraDataItem name="GUI/LastItemSelected" value="m=from_diag"/>
      <ExtraDataItem name="GUI/LastWindowPosition" value="255,217,770,550"/>
      <ExtraDataItem name="GUI/RecentFolderHD" value="//diag03-pc/vbox_hdd"/>
      <ExtraDataItem name="GUI/RecentListHD" value="\diag03-pc\vbox_hdd\xp_legacy_mode.vdi"/>
      <ExtraDataItem name="GUI/SplitterSizes" value="255,510"/>
      <ExtraDataItem name="GUI/Toolbar/MachineTools/Order" value="None"/>
      <ExtraDataItem name="GUI/UpdateCheckCount" value="3"/>
      <ExtraDataItem name="GUI/UpdateDate" value="1 d, 2017-10-23, stable, 5.2.0"/>
    </ExtraData>
    <MachineRegistry>
      <MachineEntry uuid="{254e0435-0f3f-445b-a35d-1f6d774a0fc3}" src="C:\Users\bogna\VirtualBox VMs\from_diag\from_diag.vbox"/>
    </MachineRegistry>
    <NetserviceRegistry>
      <DHCPServers>
        <DHCPServer networkName="HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter" IPAddress="192.168.56.100" networkMask="255.255.255.0" lowerIP="192.168.56.101" upperIP="192.168.56.254" enabled="1"/>
      </DHCPServers>
    </NetserviceRegistry>
    <SystemProperties defaultMachineFolder="C:\Users\bogna\VirtualBox VMs" defaultHardDiskFormat="VDI" VRDEAuthLibrary="VBoxAuth" webServiceAuthLibrary="VBoxAuth" LogHistoryCount="3" exclusiveHwVirt="false"/>
    <USBDeviceFilters/>
  </Global>
</VirtualBox>

如何从这个 xml 的 MachineEntrys 中获取 uuid 和 src 到一个数组? .net 4.5

我试过了,因为数组是空的:

** 请勿编辑此文件。 ** 如果您在使用任何 VirtualBox 相关应用程序时更改此文件 ** 是 运行,您的更改稍后会被覆盖,不会生效。 ** 使用 VBoxManage 或 VirtualBox Manager GUI 进行更改。

        void getfromxml()
        {

            XmlDocument doc = new XmlDocument();
            doc.LoadXml(vboxxml);


            XmlNodeList nodes  = doc.DocumentElement.SelectNodes("/VirtualBox/Global/MachineRegistry/MachineEntry");

            int i = 0;
            foreach (XmlNode node in nodes)
            {
                machines[i,0] = node.Attributes["uuid"].Value;
                machines[i,1] = node.Attributes["src"].Value;

                i++;
            }



        }

您忽略了 XML 命名空间。您可以尝试:

XmlNodeList nodes  = doc.DocumentElement.SelectNodes("//*[local-name()='MachineEntry']");

(如果需要,使用 local-name() 函数扩展其他级别)