Saturday, 15 January 2011

c# - import xml and update canvas - silverlight -


यह छवि दिखाती है कि परियोजना क्या करती है

 यहाँ छवि विवरण दर्ज करें

मैं कैनवास को इस तरह XML में सहेज सकता हूं:

  निजी शून्य सेवफाइल (ऑब्जेक्ट) प्रेषक, RoutedEventArgs ई) {SaveFileDialog saveFileDialog = नया SaveFileDialog () {DefaultExt = "xml", फ़िल्टर = "XML फ़ाइलें (* .xml) | * .xml | सभी फ़ाइलें (*। *) * *। *", FilterIndex = 1}; अगर (saveFileDialog.ShowDialog () == सच) {(स्ट्रीम स्ट्रीम = saveFileDialog.OpenFile ()) का उपयोग कर ({StreamWriter SW = नया स्ट्रीमर (स्ट्रीम, System.Text.Encoding.UTF8)) {sw.Write (GetGeneratedXML ( )।तार()); }}}} निजी XElement GetGeneratedXML () {XElement userInformation = नया XElement ("डायग्राम"); (एक्सबॉक्स), नई एक्सईलेमेंट ("नोम", बी। हेडर), नया एक्सईलेमेंट ("एटिट्यूओ", बी.टेक्स्ट।))); } Foreach (कनेक्शन में कनेक्शन 1 सी) {userInformation.Add (नया XElement ("Relaçà £ o", नया XElement ("Entidade1", नया XAttribute ("Nome", c.Box1.Header), नया XAttribute ("Cardinalidade ", सी। नोडा 1। टाइटल), नया एक्सईलेमेंट (" एंटिडेड 2 ", नया एक्सएट्रीब्यूवर (" नोम ", सी.बॉक्स 2। हेडर), नया एक्सटेटिविट (" कार्डिनिडाइड ", सी। नोड 2.Title)))); } वापसी उपयोगकर्ता सूचना; }   

और अब, मैं इस XML फ़ाइल को आयात करना चाहूंगा और उसके बाद बॉक्स और कनेक्शन के साथ कैनवास को अपडेट करूँगा। कोई भी विचार?

यहां एक पूर्ण गोलटिप है जो प्रक्रिया को दिखाता है:

 < कोड> निजी स्थिर शून्य testGeneratedXML () {MyBox livro = नया MyBox {हैडर = "लिवरो", पाठ = "नोम \ r \ n ऑपरेटर"}; MyBox autor = नया MyBox {हेडर = "लेखक", पाठ = "नोम"}; कनेक्शन hasAutors = नया कनेक्शन {Box1 = livro, Box2 = autor, नोड 1 = नया नोड {title = "1"}, नोड 2 = नया नोड {title = "*"}}; मायबॉक्स [] बॉक्स = {लाइवो, ऑटोर}; कनेक्शन [] कनेक्शन = {hasAutors}; XElement उपयोगकर्ता सूचना = नया XElement ("डायग्राम"); (एक्सबॉक्स), नई एक्सईलेमेंट ("नोम", बी। हेडर), नया एक्सईलेमेंट ("एटिट्यूओ", बी.टेक्स्ट।))); } विदेशी मुद्रा (कनेक्शन में कनेक्शन सी) {userInformation.Add (नया XElement ("Relaçà £ o", नया XElement ("Entidade1", नया XAttribute ("Nome", c.Box1.Header), नया XAttribute ("Cardinalidade ", सी। नोडा 1। टाइटल), नया एक्सईलेमेंट (" एंटिडेड 2 ", नया एक्सएट्रीब्यूवर (" नोम ", सी.बॉक्स 2। हेडर), नया एक्सटेटिविट (" कार्डिनिडाइड ", सी। नोड 2.Title)))); } स्ट्रिंगव्राइट SW = नया स्ट्रिंगर्राइटर (); XmlWriter xmlw = नया XmlTextWriter (sw); // {सेटिंग्स = नया XmlWriterSettings {इंडेंट = सच}}; userInformation.WriteTo (xmlw); स्ट्रिंग xml = sw.ToString (); XDocument दस्तावेज़ = XDocument.Parse (xml); MyBox [] outboxes = doc.Root.Elements ("Entidade")। चुनें (ई = & gt; नया MyBox {Header = e.Element ("नोम")। मान, पाठ = e.Element ("एटिट्यूओ")। मान }) .ओएरे (); कनेक्शन [] outConnections = doc.Root.Elements ("Relaçà £ o")। चयन करें (ई = & gt; नया कनेक्शन {बॉक्स 1 = आउटबॉक्स। सिंगल (बी = & gt; बी। हेडर == e.Element ("Entidade1 ")। विशेषता (" नोम ")। मान), बॉक्स 2 = आउटबोक्स। सिंगल (बी = & gt; बी। हैडर == ई। एलेमेंट (" एंटिडेड 2 ")। विशेषता (" नोम ")। मान), नोड 1 = नया नोड {शीर्षक = ई। एलेमेंट ("एंटिडाइड 1") विशेषता ("कार्डिनिडाइड")। मान}, नोड 2 = नया नोड {शीर्षक = ई। एलेमेंट ("एंटिडाडे 1")। विशेषता ("कार्डिनिडाइड")। मान}, रेखा = नई रेखा ()}) .ओएरे (); विदेशी मुद्रा (आउटबॉक्स में मेरा बॉक्स बॉक्स) {box.MouseLeftButtonDown + = Box_MouseLeftButtonDown; Box.MouseLeftButtonUp + = Box_MouseLeftButtonUp; बॉक्स। माउज़मॉव + = बॉक्समाउसमेव; canvas.Children.Add (बॉक्स); } ताज़ा करेंपेनों (); }   

आशा है कि यह मदद करता है ...

संपादित करें : यहां एक फ़ाइल से एक्सएमएल दस्तावेज़ प्राप्त करने का तरीका है (थोड़ा अनुकूलित करने के लिए ): <पूर्व> OpenFileDialog ofd = नया OpenFileDialog (); ofd.ShowDialog (); XDocument दस्तावेज़ = XDocument.Load (ofd.FileName);

उपयोगकर्ता फ़ाइल का चयन करता है और इसे लोड किया जाता है।

No comments:

Post a Comment