我有这段代码可以读取文本,然后将其解析为 XML:
var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"Assets\levels.xml");
var stream = await file.OpenReadAsync();
var rdr = new StreamReader(stream.AsStream());
var contents = await rdr.ReadToEndAsync();
var cleanedContents = contents.Replace("\r\n", "").Replace( '\\', ' ');
var xmlElements = XDocument.Load(cleanedContents).Elements();
var levels = xmlElements.Descendants("Level");
这是 XML:
<?xml version="1.0" encoding="utf-8" ?>
<LevelLoader>
<Level>
<LevelNum>1</LevelNum>
<Waves>
<Wave>
<WaveNum>1</WaveNum>
<Background>
<MinNoise>180</MinNoise>
<MaxNoise>255</MaxNoise>
</Background>
<Objects>
<Object>
<Id>Sat</Id>
<Position>
<Required>1</Required>
<X>2000</X>
<Y>3000</Y>
</Position>
</Object>
</Objects>
</Wave>
</Waves>
</Level>
</LevelLoader>
调试器显示一堆回车和换行被拾取(\r\n):
<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n<LevelLoader>\r\n <Level>\r\n <LevelNum>1</LevelNum>\r\n <Waves>\r\n <Wave>\r\n <WaveNum>1</WaveNum>\r\n <Background>\r\n <MinNoise>180</MinNoise>\r\n <MaxNoise>255</MaxNoise>\r\n </Background>\r\n <Objects>\r\n <Object>\r\n <Id>Sat</Id>\r\n <Position>\r\n <Required>1</Required>\r\n <X>2000</X>\r\n <Y>3000</Y>\r\n </Position>\r\n </Object>\r\n </Objects>\r\n </Wave>\r\n </Waves>\r\n </Level>\r\n</LevelLoader>
我似乎可以通过替换来清除它。
我不认为带有?的标题有什么不同,因为即使我删除它,我仍然会收到这个错误。
我不知道如何删除额外的 \'s 因为 .replace('\', ' ') 似乎没有这样做。
<?xml version=\"1.0\" encoding=\"utf-8\" ?><LevelLoader> <Level> <LevelNum>1</LevelNum> <Waves> <Wave> <WaveNum>1</WaveNum> <Background> <MinNoise>180</MinNoise> <MaxNoise>255</MaxNoise> </Background> <Objects> <Object> <Id>Sat</Id> <Position> <Required>1</Required> <X>2000</X> <Y>3000</Y> </Position> </Object> </Objects> </Wave> </Waves> </Level></LevelLoader>
有了我仍然看到的所有内容:
路径中的非法字符。
有什么建议么?