如何从XML元素创建Point对象
本文关键字:创建 Point 对象 元素 XML | 更新日期: 2023-09-27 18:26:36
我有一个应用程序,它需要保存对象的x,y坐标的功能,以便在以后第二次启动应用程序时,应用程序可以在以前找到的点上搜索图像。
我已经成功地创建了一种使用应用程序发现的要点编写XML文档的方法(我认为它的格式正确)。现在,我只需要在启动时将这些点从XML文件读取回一个点对象。
我已经找到了几个"如何"从文件中读取XML的例子,或者类似问题的答案,但无论出于什么原因,我都很难将这些答案应用于这种情况。我感兴趣的是解释如何从xml中提取date元素并创建datatime对象,以及提取每个location元素中的x元素和y元素,并将它们放入一个新的Point中,然后我可以使用。
这就是我的XML文档的样子:
<?xml version="1.0" encoding="utf-8"?>
<FirstLookGameBox_XML>
<location>
<date>2014-10-15T00:00:00-06:00</date>
<x>0</x>
<y>0</y>
</location>
<location>
<date>2014-10-15T00:00:00-05:00</date>
<x>0</x>
<y>0</y>
</location>
<location>
<date>2014-10-15T00:00:00-04:00</date>
<x>0</x>
<y>0</y>
</location>
</FirstLookGameBox_XML>
以下是我的代码。。。很明显,linq/xml,老实说,我真的不确定我在用它做什么。大多数答案只是向你抛出一块代码,而没有解释它的含义,所以我试图把我发现的东西用于我自己的目的,但它并没有像我希望的那样起作用。
var xml = XDocument.Load("test.xml");
string date;
int? x;
int? y;
var q = from b in xml.Descendants("location")
select new
{
date = (string)b.Element("date"),
x = (int?)b.Element("x"),
y = (int?)b.Element("y"),
};
我还想知道我格式化XML文档的方式是否正确?我的目标是找到图像的最后已知位置,但只存储最后3个已知位置。如果找到第四个位置,我会用最新的最后已知位置替换最旧的最后已知的位置。
希望我已经提供了足够的信息,使之有意义。
wait-wait-wait,您希望以下代码段中声明的x和y有任何值吗?
var xml = XDocument.Load("test.xml");
string date;
int? x;
int? y;
实际上,您并没有将这些设置为任何内容,如果您设置了,那就没有任何意义,因为您的XML中有许多x
和y
。如果你想访问你实际存储的x和y,可以这样做。
foreach (var obj in q)
{
Console.WriteLine(obj.x); // or however you want to see your input
Console.WriteLine(obj.y);
}