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

Drew DeVault sircmpwn at gmail.com
Mon Feb 6 07:06:08 UTC 2012


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


More information about the Mono-list mailing list