[Mono-list] Mono-Only XDocument.Save Error

Drew DeVault sircmpwn at gmail.com
Mon Feb 6 07:29:22 UTC 2012


I've narrowed the issue down - it only occurs when XDocument.Load is 
used with LoadOptions.PreserveWhitespace.  I've uploaded an example 
demonstrating this error.  The relevant XML file is in /bin/Debug.
http://sircmpwn.users.sf.net/uploads/0TestXDocument.tar.gz

--
Drew "Sir Cmpwn" DeVault

On 02/06/2012 12:14 AM, Atsushi Eno wrote:
> I have one doubt that I think is likely the cause of the problem and 
> also that prevents me from verifying it: you seem to have non-ASCII 
> character in your XML you pasted in the message. This could be cause 
> of the error e.g. inconsistent encoding input/output. A reproducible 
> test case that everyone can examine is appreciated.
>
> Atsushi Eno
>
>
>> I can duplicate this problem on Linux Mint 12 and Ubuntu 11.10, but 
>> Microsoft.NET on Windows 7 does not have the issue. The issue is that 
>> my XDocument becomes corrupted the moment it loads, and cannot be 
>> saved. Strangely, I am able to traverse it and manipulate it in 
>> memory. The following code:
>>
>> Stream s = File.Open("example.xml", FileMode.Open);
>> XDocument d = XDocument.Load(s);
>> s.Close();
>> d.Save("example.xml");
>>
>> Produces the following exception:
>>
>> [23:19:05] PartyCraft.CurrentDomain_UnhandledException: Error: 
>> InvalidOperationException: This XmlWriter does not accept Text at 
>> this state Prolog.
>> [ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidOperationException: 
>> This XmlWriter does not accept Text at this state Prolog.
>> at System.Xml.XmlTextWriter.ShiftStateContent (System.String occured, 
>> Boolean allowAttribute) [0x00000] in <filename unknown>:0
>> at System.Xml.XmlTextWriter.WriteString (System.String text) 
>> [0x00000] in <filename unknown>:0
>> at System.Xml.DefaultXmlWriter.WriteString (System.String text) 
>> [0x00000] in <filename unknown>:0
>> at System.Xml.Linq.XText.WriteTo (System.Xml.XmlWriter w) [0x00000] 
>> in <filename unknown>:0
>> at System.Xml.Linq.XDocument.WriteTo (System.Xml.XmlWriter w) 
>> [0x00000] in <filename unknown>:0
>> at System.Xml.Linq.XNode.ToString (SaveOptions options) [0x00000] in 
>> <filename unknown>:0
>> at System.Xml.Linq.XNode.ToString () [0x00000] in <filename unknown>:0
>> at PartyCraftServer.XmlSettings.set_Item (System.String key, 
>> System.String value) [0x00000] in <filename unknown>:0
>> at PartyCraftServer.Commands.SettingCommand.ExecuteCommand 
>> (LibMinecraft.Server.RemoteClient client, System.String[] parameters) 
>> [0x00000] in <filename unknown>:0
>> at PartyCraftServer.Commands.Command.Execute 
>> (LibMinecraft.Server.RemoteClient client, System.String command) 
>> [0x00000] in <filename unknown>:0
>> at PartyCraftServer.PartyCraft.Run () [0x00000] in <filename unknown>:0
>> at PartyCraftServer.Program.Main (System.String[] args) [0x00000] in 
>> <filename unknown>:0
>>
>> The same exception occurs on d.ToString();
>>
>> The XML that is being loaded looks like this:
>>
>> <?xml version="1.0" encoding="utf-8" ?>
>> <partyCraft>
>> <server maxplayers="100">
>> <motd>PartyCraft Test Server</motd>
>> <messages>
>> <death>
>> <!--TODO-->
>> <suicide>§e{0} killed themselves.</suicide>
>> <creeper>§e{0} looked at a creeper funny.</creeper>
>> </death>
>> </messages>
>> </server>
>>
>> <command>
>> <alias>
>> <setting>s</setting>
>> </alias>
>> </command>
>>
>> <plugins>
>> <!--TODO-->
>> <plugin>TestPlugin.dll</plugin>
>> </plugins>
>> </partyCraft>
>>
>> And when saved, even though an exception occurs, the document is 
>> overwritten with this:
>>
>> <?xml version="1.0" encoding="utf-8" ?>
>>
>> This is the output from mono --version:
>>
>> Mono JIT compiler version 2.10.5 (Debian 2.10.5-1)
>> Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. 
>> www.mono-project.com
>> TLS: __thread
>> SIGSEGV: altstack
>> Notifications: epoll
>> Architecture: amd64
>> Disabled: none
>> Misc: softdebug
>> LLVM: supported, not enabled.
>> GC: Included Boehm (with typed GC and Parallel Mark)
>>
>> Any help would be appreciated.
>>
>> -- 
>> Drew "Sir Cmpwn" DeVault
>> _______________________________________________
>> Mono-list maillist  -  Mono-list at lists.ximian.com
>> http://lists.ximian.com/mailman/listinfo/mono-list
>
> _______________________________________________
> Mono-list maillist  -  Mono-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list



More information about the Mono-list mailing list