2012-03-04 32 views
11

Próbuję dowiedzieć się, jak przesłać niektóre kod .Net, który sparsował plik XML do WinRT. Do tej pory, z pomocą The given System.Uri cannot be converted into a Windows.Foundation.Uri, mam poniższy kod. Mimo to utknąć natychmiast po tym, jak utworzyć Uri:Jak otworzyć spakowany plik za pomocą WinRT

static readonly Uri ResourcesBase = new Uri(@"ms-resource://MyAssembly/"); 
    public override async void Load() 
    { 
     Uri uri = new Uri(ResourcesBase, filePath); // filePath = "Data//world.xml"; 
     XmlLoadSettings settings = new XmlLoadSettings() { ValidateOnParse = false }; 

     XmlDocument xmlDoc = await XmlDocument.LoadFromUriAsync(uri, settings); 

     foreach (IXmlNode xmlNode in xmlDoc.ChildNodes) 
     { 
      ProcessNode(xmlNode); 
     } 
    } 

dostać nieobsługiwany wyjątek podczas próby wywołania XmlDocument.LoadFromUriAsyn (URI):

ArgumentException był nieobsługiwany przez kod użytkownika - Wartość robi nie mieszczą się w oczekiwanym zakresie.

Czy ktoś jeszcze czuje, że wszystko jest 10 razy trudniejsze dzięki WinRT?

EDIT:

Próbowałem wszystkie następujące ciągi i uzyskać dokładnie ten sam błąd:

Uri uri = new Uri("ms-resource://MyAssembly//" + filePath); 
    Uri uri = new Uri("ms-resource://MyAssembly/" + filePath); 
    Uri uri = new Uri("d:\\projects\\crystal\\" + filePath); // A valid absolute path 

projekt konfigurowaniu:

projekt

  • Właściwości
  • Referencje
  • Aktywa
  • danych
    • world.xml kod
  • Źródło ...

w kodzie:

filePath = "Data\\world.xml"; 

Próbowałem również umieszczenie xml plik pod assset \ data i tylko zasoby. Nic nie robi różnicy.

Inną rzeczą, mam Build Action z xml ustawioną na "Content". Czy to jest poprawne? Jedyne, co mogłem sobie wyobrazić, to "Osadzone zasoby", ale wątpię w to.

Pełne dane Wyjątek:

System.ArgumentException był nieobsługiwany przez kod użytkownika

hresult = -2147024809

Message = wartość nie mieści się w oczekiwanym zakresie.

Źródło = Windows.Data.Xml.Dom

StackTrace:

w Windows.Data.Xml.Dom.XmlDocument.LoadFromUriAsync (URI URI XmlLoadSettings loadSettings)

w Crystal.IO .File.XmlFileSerializer.d__1.MoveNext() w d: \ Projects \ Crystal \ library \ IO \ File \ XmlFileSerializer.CS: linia 32

InnerException:

Pobierz najmniejsza możliwa do powtórzenia błędu przykład kwestię: test_xml.zip

+0

Nie powinieneś mieć tylko jednego końcowego ukośnika? To znaczy. 'Uri uri = new Uri (" ms-resource: // MyAssembly/"+ filePath);'. –

+0

Posiadanie tylko 1 końcowego ukośnika lub bezwzględnej ścieżki pliku (c: \ ...) nie ma żadnego innego efektu. –

+0

Czy możesz pokazać nam, jak wygląda 'filePath'? – user7116

Odpowiedz

Powiązane problemy