2013-08-15 3 views
0

Windows Phone 8 응용 프로그램에서 생성 한 다음 XML 파일이 있습니다.쿼리 매개 변수를 기반으로 XML에서 값 검색?

지금까지는 모든 작업이 가능했지만 이제는 파일을 쿼리하여 특정과 관련된 검색을 할 수있게되었습니다. 따라서 "2222에 대해"쿼리하면 "위치 이름"이 반환됩니다.

나는 이것을하는 몇 가지 방법을 시도했지만, 나는 이것을 달성하는 방법을 찾지 못했다는 것을 깨달았다. XML과 LINQ는 나를 혼란스럽게 혼란스럽게합니다 .... 그래서 나는 모든 튜토리얼이나 팁을 주셔서 감사합니다. 지금까지 코드는 샘플 XML 문서 아래에 있습니다.

는 당신에게 다음
<?xml version="1.0" encoding="utf-8"?> 
<SmartSafe> 
    <Tag> 
    <tag>22222</tag> 
    <name>Location Name</name> 
    <latitude>xx.xxxxxxx</latitude> 
    <longitude>xx.xxxxxxx</longitude> 
    </Tag> 
    <Tag> 
    <tag>4444</tag> 
    <name>Location Name</name> 
    <latitude>xx.xxxxxxx</latitude> 
    <longitude>xx.xxxxxxx</longitude> 
    </Tag> 
    <Tag> 
    <tag>4444</tag> 
    <name>Location Name</name> 
    <latitude>xx.xxxxxxx</latitude> 
    <longitude>xx.xxxxxxx</longitude> 
    </Tag> 
    <Tag> 
    <tag>4444</tag> 
    <name>Location Name</name> 
    <latitude>xx.xxxxxxx</latitude> 
    <longitude>xx.xxxxxxx</longitude> 
    </Tag> 
</SmartSafe> 

가 UriAssociationMapper에서 전달 된 UID를 분석 처리하는 .cs의 섹션 대단히 감사합니다.

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    if (NavigationContext.QueryString.ContainsKey("uid")) 
    { 
     uid = int.Parse(NavigationContext.QueryString["uid"]); 
    } 
    base.OnNavigatedTo(e); 

    string stringUid = uid.ToString(); 
    tagID.Text = stringUid; 

    //Retrieve tag name from xml 

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    XDocument document; 
    using (var storage = IsolatedStorageFile.GetUserStoreForApplication()) 
     if (storage.FileExists("/tagRegistry.xml")) 
     { 
      using (var stream = storage.OpenFile("/tagRegistry.xml", FileMode.Open)) 
      { 
       document = XDocument.Load(stream); 
      } 
     } 
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

} 

도움을 주신다면 감사드립니다.

답변

0

처럼 보일 것입니다 XML 쿼리에 대한 귀하의 LINQ : 요소가 발견되지 않는 경우

var value = doc.Root.Elements("Tag") 
        .FirstOrDefault(t => (string)t.Element("tag") == "22222") 
        .Element("name").Value; 

그러나, 그것은 당신이 있다면 당신이 그것을 사용해서는 안하지 않도록 XML 문서가 무엇을 포함, NullReferenceException가 발생합니다 너 찾고있어. 확실하지 않은 경우 다음을 대신 사용하십시오.

var tag = doc.Root.Elements("Tag") 
        .FirstOrDefault(t => (string)t.Element("tag") == "22222"); 

var value = tag == null ? string.Empty : (string)tag.Element("name"); 
+0

정확하게 찾고있는 내용입니다. 감사합니다. NullReferenceException 처리기도 많이 감사합니다. – anthonyhumphreys

관련 문제