J'essaie de comprendre comment porter un code .Net qui a analysé un fichier xml à WinRT. Jusqu'à présent, avec l'aide de The given System.Uri cannot be converted into a Windows.Foundation.Uri, j'ai le code ci-dessous. Pourtant, je suis bloqué immédiatement après avoir créé l'Uri:Comment ouvrir un fichier empaqueté avec 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);
}
}
je reçois une exception non gérée quand je tente d'appeler XmlDocument.LoadFromUriAsyn (uri):
ArgumentException était non gérée par le code utilisateur - La valeur ne ne pas tomber dans la fourchette attendue. Quelqu'un d'autre a l'impression que tout est 10 fois plus dur avec WinRT?
EDIT:
J'ai essayé toutes les chaînes suivantes, et obtenir exactement la même erreur:
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
projet mis en place:
Projet
- Propriétés
- Références
- actifs
- données
- world.xml
- code source ...
Dans le code:
filePath = "Data\\world.xml";
J'ai aussi essayé de mettre le xml fichier sous assset \ data, et juste des assets. Rien ne semble faire la différence.
Une autre chose, j'ai l'action de construction du jeu de xml à "Content". Est-ce exact? La seule autre chose que je pourrais imaginer serait "Embedded Resource" mais j'en doute.
Détails de l'exception complète:
System.ArgumentException était non gérée par le code utilisateur
HResult = -2147024809
message = valeur ne tombe pas dans la fourchette prévue.
Source = Windows.Data.Xml.Dom
StackTrace:
à Windows.Data.Xml.Dom.XmlDocument.LoadFromUriAsync (Uri uri, XmlLoadSettings loadSettings)
à Crystal.IO .File.XmlFileSerializer.d__1.MoveNext() dans d: \ Projects \ Crystal \ bibliothèque \ IO \ File \ XmlFileSerializer.cs: ligne 32
InnerException:
Télécharger le plus petit exemple possible de repro la question: j'ai finalement test_xml.zip
Vous ne devriez pas avoir un seul slash final? C'est à dire. 'Uri uri = nouvel Uri (" ms-resource: // MyAssembly/"+ filePath);'. –
Avoir seulement 1 barre oblique ou un chemin de fichier absolu (c: \ ...) n'ont pas d'effet différent. –
Pouvez-vous nous montrer à quoi ressemble 'filePath'? – user7116