C# 未知XML错误

C# 未知XML错误,c#,xml,C#,Xml,我试图读入一些XML数据,但我遇到了一个以前从未发现的错误。有人能解释一下吗 错误: 屏幕名称:System.Xml.Linq.Extensions+c__迭代器5 调试:日志(对象) HV_readsetingsfile:Update()(位于Assets/_scripts/HV_readsetingsfile.cs:64) 下面是我在XML中读取的代码,并最终生成了错误: var xdoc = XDocument.Load(@"C:\\Test.xml");

我试图读入一些XML数据,但我遇到了一个以前从未发现的错误。有人能解释一下吗

错误:

屏幕名称:System.Xml.Linq.Extensions+c__迭代器5

调试:日志(对象) HV_readsetingsfile:Update()(位于Assets/_scripts/HV_readsetingsfile.cs:64)

下面是我在XML中读取的代码,并最终生成了错误:

   var xdoc = XDocument.Load(@"C:\\Test.xml");
        var screen = xdoc.Descendants("Screen");
              

        foreach (var Screen in screen)
        {
            HV_Screen _screen = new HV_Screen();
            _screen.Name = Convert.ToString(Screen.Descendants("Name").Attributes("Name"));
              

            Debug.Log("Screen name: " + _screen.Name);
        }
和我的XML表:

<Settings>
  <Display_Settings>
    <Screen>
      <Name Name="Screen" />
      <ScreenTag Tag="Screen Tag" />
      <LocalPosition X="12" Y="81" Z="28" />
      <Width Width="54" />
      <Height Height="912" />
    </Screen>
     <Screen>
      <Name Name="Screen" />
      <ScreenTag Tag="Screen Tag" />
      <LocalPosition X="32" Y="21" Z="28" />
      <Width Width="54" />
      <Height Height="912" />
    </Screen>
  </Display_Settings>
</Settings>

这不是错误。这正是你所要求的。您已要求在所有
Name
元素中提供所有
Name
属性。。。但是,您试图将该序列记录为单个值

我想你想要:

var screens = xdoc.Descendants("Screen");
foreach (var screen in screens)
{
    HV_Screen _screen = new HV_Screen();
    _screen.Name = (string) screen.Element("Name").Attribute("Name");

    Debug.Log("Screen name: " + _screen.Name);
}
现在,每个
屏幕
元素查找一个元素和一个属性。请注意,我已将变量名称更改为遵循正常的.NET约定,而不是
\u screen
,因为我不知道
HV\u screen
是什么意思

不太清楚为什么在
宽度
高度
名称
中有单独的元素,每个元素都有一个与元素名称匹配的属性,而
屏幕标记
几乎都是这样。如果XML在您的控制之下,您可以考虑:

<Screen Name="Screen" Width="54" Height="912" Tag="Screen Tag">
  <LocalPosition X="12" Y="81" Z="28" />
</Screen>

或许:

<Screen>
  <Name>Screen</Name>
  <ScreenTag>Screen Tag</ScreenTag>
  <LocalPosition X="12" Y="81" Z="28" />
  <Width>54</Width>
  <Height>912</Height>
</Screen>

屏风
屏幕标签
54
912
此外,如果您试图构建一个
HV\u屏幕
项的集合,您可能希望使用查询而不是
foreach
循环,但目前还不清楚除了记录调试信息之外,您实际上在做什么。

您可以尝试:

var xdoc = XDocument.Load(@"C:\\test.xml");

        List<string> lstScreen = xdoc.Descendants("Screen").Select(x => x.Element("Name").Attribute("Name").Value).ToList();

        foreach (string name in lstScreen)
        {
          ...
var xdoc=XDocument.Load(@“C:\\test.xml”);
List lstScreen=xdoc.substands(“Screen”).Select(x=>x.Element(“Name”).Attribute(“Name”).Value.ToList();
foreach(屏幕中的字符串名称)
{
...
我希望能帮助你