我正在阅读以下 XML 数据:
<Settings>
<Display_Settings>
<Camera>
<Name Name="" />
<CameraTag Tag="1" />
<LocalPosition X="1" Y="1" Z="1" />
<Orientation Yaw="1" Pitch="1" Roll="1" />
<Far Far="1" />
<Near Near="1" />
<FOV FOV="1" />
<AspectRatio AspectRatio="1" />
<ScreenDistance ScreenDistance="1" />
</Camera>
<Camera>
<Name Name="Camera1" />
<CameraTag Tag="2" />
<LocalPosition X="2" Y="2" Z="2" />
<Orientation Yaw="2" Pitch="2" Roll="2" />
<Far Far="2" />
<Near Near="2" />
<FOV FOV="2" />
<AspectRatio AspectRatio="1" />
<ScreenDistance ScreenDistance="2" />
</Camera>
</Display_Settings>
</Settings>
然后在我的 Unity 程序中,我正在读取这些值并将它们填写在字典中,如下所示(只做几个,而不是完整的方法):
public struct Entry
{
public System.Object value;
public Type type;
}
void UpDate()
{
var xdoc = XDocument.Load(@"C:\\Test.xml");
var cameras = xdoc.Descendants("Camera");
foreach (var camera in cameras)
{
// reading in values from XML
HV_Camera _camera = new HV_Camera();
_camera.Name = (string)camera.Element("Name").Attribute("Name");
_camera.Tag = (string)camera.Element("CameraTag").Attribute("Tag");
// filling out a dictionary
_cameraEntry.type = typeof(string);
_cameraEntry.value = (string)camera.Element("Name").Attribute("Name");
cameraDictionary.Add("CameraName", _cameraEntry);
_cameraEntry.type = typeof(string);
_cameraEntry.value = (string)camera.Element("CameraTag").Attribute("Tag");
cameraDictionary.Add("CameraTag", _cameraEntry);
}
}
现在,我尝试简单地检查一下我的字典是否已正确填写,然后再分配我的存储值。但是当我运行我的程序时,我收到以下错误:
ArgumentException:字典中已存在具有相同键的元素。System.Collections.Generic.Dictionary`2[System.String,Entry].Add(System.String 键,条目值)
有人可以告诉我如何克服这个问题吗?我知道这是因为我的 XML 中有两个相机框架,但我认为使用字典可以让我很好地存储所有内容。
我还进行了检查,我的 XML 确实被读入了。所以这不是问题。
如果这是一个愚蠢的问题,我很抱歉。我是在这个级别上使用字典的新手。
编辑
抱歉,我完全忘记添加我在读取值时尝试过的代码。
foreach (KeyValuePair<string, Entry> pair in settings.cameraDictionary)
{
if (pair.Key == "FOV")
{
Debug.Log("This is a test!!!");
}
}
if (settings.cameraDictionary.ContainsKey("CameraName"))
{
Debug.Log("This is a test!!!");
}