2014-10-15 4 views
-1

객체의 x, y 좌표를 저장하는 기능이 필요한 응용 프로그램이있어서 응용 프로그램을 나중에 다시 시작할 때 이전에 찾은 점을 검색 할 수 있습니다. 이미지.XML 요소에서 Point 객체를 생성하는 방법

필자는 응용 프로그램에서 발견 한 점으로 XML 문서 (필자가 올바르게 형식화 한 것)를 작성하는 방법을 성공적으로 만들었습니다. 이제 시작시 XML 파일에서 포인트 객체로 포인트를 다시 읽는 것만으로도 충분합니다.

파일에서 XML을 읽는 방법이나 유사한 문제에 대한 몇 가지 예를 발견했지만 어떤 이유로이 상황에 대한 답변을 적용하는 데 문제가 있습니다. 나는 date 요소를 xml에서 가져 와서 datatime 객체를 생성하는 방법과 각 요소에서 x 요소와 y 요소를 가져와 사용할 수있는 새 Point에 넣는 방법에 대한 설명에 관심이 있습니다.

다음
<?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을 가지고 내가 가진 뭘하는지 정말 모르겠어요 솔직히 내용은 다음과 같습니다

이 내 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 개의 위치 만 저장하는 것입니다. 네 번째 위치가 발견되면 가장 오래 된 마지막 알려진 위치를 가장 최근에 마지막으로 알려진 위치로 바꿉니다.

필자는이 사실을 이해하기에 충분한 정보를 제공했으면 좋겠다.

+0

코드가 작동하지 않는 경우에도 게시하는 데 가치가 있습니다. 그런 식으로 이미 시도한 제안은 제공하지 않습니다. – Tim

+0

좋아, 잠깐 내가 여기 올리는 동안. –

+0

코드로 업데이트되었습니다. –

답변

1

잠깐 기다려주십시오. 다음 스 니펫에서 x 및 y 값이 있다고 예상합니까?

var xml = XDocument.Load("test.xml"); 
string date; 
int? x; 
int? y; 

당신은 실제로 아무것도 사람들을 설정하지 않는 것, 당신이 인 경우에 당신이 많은 x들과 XML에 y의이 있기 때문에, 그것은 어떤 의미가 없다. 실제로 저장하고있는 x와 y에 액세스하려면이 작업을 수행하십시오.

foreach (var obj in q) 
{ 
    Console.WriteLine(obj.x); // or however you want to see your input 
    Console.WriteLine(obj.y); 
} 
+0

x 변수에 null 값이 계속 표시됩니다. 나는 x = (int?) b.Element ("x")를 x = int.Parse (b.Element ("x") .Value)로 대체한다고 가정합니다. –

+0

LINQ 쿼리가 익명 형식의 컬렉션을 반환하고 있습니다. 'x'를 설정하지 않습니다. 반환 된 컬렉션을 반복하고 컬렉션의 각 객체의'date','x' 및'y' 속성을 확인해야합니다. – Tim

+0

@Fama_Sicura 출력물은 어떻게 생겼습니까? –