2016-11-22 1 views
0

`использование UnityEngine; с использованием System.Collections; с использованием System.Collections.Generic; с использованием System.Text; с использованием System.Xml; с использованием System.IO;Загрузка XML внутри Unity

public class xmlhandler{ 
public XmlNodeList GetData(string xmlfilepath,string tag) 
{ 
    XmlDocument xmlDoc = new XmlDocument(); // xmlDoc is the new xml document. 
    TextAsset textAsset = (TextAsset)Resources.Load(xmlfilepath, typeof(TextAsset)); 
    xmlDoc.Load(textAsset.text); // load the file. 
    XmlNodeList data = xmlDoc.GetElementsByTagName(tag); // array of the level nodes. 
    return data; 
} 
} 

`

я не могу показаться, чтобы иметь возможность получить XML, чтобы загрузить правильно. Это правильный путь при вызове и все, я проверил. Я не знаю, какую еще информацию нужно дать. Я предполагаю, что я просто не использую правильную функцию или что-то в этом роде. Извините за незнание того, что происходит.

Ошибка я получаю

ArgumentException: Illegal characters in path. 
System.IO.Path.IsPathRooted (System.String path) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.IO/Path.cs:508) 
System.IO.Path.InsecureGetFullPath (System.String path) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.IO/Path.cs:357) 
System.IO.Path.GetFullPath (System.String path) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.IO/Path.cs:289) 
System.Xml.XmlResolver.ResolveUri (System.Uri baseUri, System.String relativeUri) 
System.Xml.XmlUrlResolver.ResolveUri (System.Uri baseUri, System.String relativeUri) 
Mono.Xml2.XmlTextReader.GetStreamFromUrl (System.String url, System.String& absoluteUriString) 
Mono.Xml2.XmlTextReader..ctor (System.String url, System.Xml.XmlNameTable nt) 
System.Xml.XmlTextReader..ctor (System.String url, System.Xml.XmlNameTable nt) 
System.Xml.XmlDocument.Load (System.String filename) 
xmlhandler.GetData (System.String xmlfilepath, System.String tag) (at Assets/Resources/scripts/xmlhandler.cs:13) 
structure_mercenarypost.Start() (at Assets/Resources/scripts/structures/structure_mercenarypost.cs:24) 
+1

Что вы читаете в Xmlfilepath. Поскольку ваша ошибка говорит, она содержит недопустимые символы. –

+0

info = xml.GetData («скрипты/структуры/структурыxml», «структура»); –

+0

Если 'info' - это то, что вы проходите как путь. Тогда я могу понять, что он терпит неудачу. Вам нужен путь к файлу. –

ответ

0

XmlDocument.Load() принимает файл путь. То, что вы передаете в это, - это весь контент вашего XML (который, вероятно, заполнен угловыми скобками, что вызывает эту конкретную ошибку).

Вместо Load(), вы хотите использовать LoadXml(). Этот метод принимает строку XML, которую вы вытаскиваете из своего TextAsset.