2012-02-06 6 views
5

मोनो संस्करण 2.10.5 का उपयोग के साथ विफल रहता है, निम्नलिखित कोड किसी भी XML दस्तावेज़ पर विफल रहता है:मोनो - XDocument.Load LoadOptions.PreserveWhitespace

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.IO; 
using System.Xml.Linq; 

namespace TestXDocument 
{ 
    class MainClass 
    { 
     public static void Main (string[] args) 
     { 
      Stream s = File.Open("Settings.xml", FileMode.Open); 
      XDocument d = XDocument.Load(s, LoadOptions.PreserveWhitespace); 
      s.Close(); 
      d.Save("Settings.xml"); 
     } 
    } 
} 

यह केवल तब होता है, तो XDocument.Load LoadOptions.PreserveWhitespace उपयोग करता है। इस बारे में कोई विचार है कि इस पर कैसे काम करें, या समस्या का समाधान करें?

लिनक्स मिंट 12 और उबंटू 11.10 पर परीक्षण किया गया।

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.XDocument.Save (System.Xml.XmlWriter w) [0x00000] in <filename unknown>:0 
    at System.Xml.Linq.XDocument.Save (System.String filename, SaveOptions options) [0x00000] in <filename unknown>:0 
    at System.Xml.Linq.XDocument.Save (System.String filename) [0x00000] in <filename unknown>:0 
    at TestXDocument.MainClass.Main (System.String[] args) [0x00000] in <filename unknown>:0 
[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.XDocument.Save (System.Xml.XmlWriter w) [0x00000] in <filename unknown>:0 
    at System.Xml.Linq.XDocument.Save (System.String filename, SaveOptions options) [0x00000] in <filename unknown>:0 
    at System.Xml.Linq.XDocument.Save (System.String filename) [0x00000] in <filename unknown>:0 
    at TestXDocument.MainClass.Main (System.String[] args) [0x00000] in <filename unknown>:0 
+2

आपको आधिकारिक बगजिला के माध्यम से मोनो मुद्दों की रिपोर्ट करने के तरीके सीखना चाहिए, http://www.mono-project.com/Bugs –

+0

क्या कोई प्रश्न है? – sehe

+0

यहां सवाल यह है कि: मैं इसे कैसे हल या काम कर सकता हूं। –

उत्तर

3

मैं उबंटू 11.10 पर दोनों कोड उदाहरण में एक ही समस्या को पुनः सकता है:

यहाँ अपवाद है। जैसा कि आपने कहा था विंडोज प्लेटफ़ॉर्म पर कोई समस्या नहीं है। ऐसा लगता है कि मोनो रनटाइम में XDocument की सेव विधि में कुछ बग हैं जिससे अप्रत्याशित त्रुटियां होती हैं। मैं इस मुद्दे को सॉफ़्टवेयर पैच के लिए मोनो रनटाइम टीम को रिपोर्ट करना चाहता हूं।

हालांकि, संभावित समाधान, कि मैं यहाँ ला सकता है,

d.Root.Save("Settings1.xml"); 

ऐसा लगता है कि XElement में विधि सहेजें किसी भी मुद्दे के रूप में हम XDocument में आई नहीं है।

+0

अच्छा कामकाज। धन्यवाद! ध्यान दें, 'PreserveWhitespace' विकल्प अभी भी '' को' 'में बदल रहा है, इसलिए यह मूल फ़ाइल का एक आदर्श व्हाइटस्पेस प्रतिनिधित्व नहीं है। मैंने इसे 'मोनो 2.10.9' का उपयोग करके मैक पर केवल विंडोज़ पर नहीं देखा है। – cod3monk3y

+0

दुर्भाग्यवश यह मेरे लिए काम नहीं करेगा। 'Info.plist' फ़ाइल एक DOCTYPE टैग ' cod3monk3y