このコードをテキストで読み取り、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>
交換で大丈夫そうです。
ヘッダーを削除してもこのエラーが発生するため、? の付いたヘッダーに違いはないと思います。
.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>
私がまだ見るすべてで:
パスに不正な文字があります。
助言がありますか?