Saturday, 15 February 2014

c# - Read then write html to xml file using linq xml and xml writer -


मैं Br / & gt; तोड़ना & lt; / content & gt; एक स्ट्रिंग में और उस स्ट्रिंग को Textbox में दिखा रहा है। बाद में उपयोगकर्ता संभवतः अतिरिक्त HTML टैग्स के साथ इसे संशोधित कर सकता है। Linq का उपयोग करने के लिए उपयोगकर्ता-इनपुट सम्मिलित करने के लिए सटीक नोड की जांच करने के लिए, सभी स्पिकी ब्रैकेट & lt;> html टैग से सामान्यीकृत & amp; lt; br / & amp; gt; तो मैं अपने एचटीएमएल टैगों को कैसे प्रस्तुत करूं?

मैंने पहले से ही इन सवालों के समाधानों को पढ़ा और कोशिश की है, लेकिन मैं इसे मेरे उपयोग के मामले में लागू करने में विफल रहा है:

यह मेरी एक्सएमएल फ़ाइल का एक उदाहरण है:

  & lt; इवेंट & gt; & Lt; इवेंट id = "0" & ​​gt; & LT; सामग्री & gt; & lt; br / & gt; & lt; / सामग्री & gt; & Lt; / घटना & gt; & Lt; / घटनाओं & gt;  

मैं कैसे लोड और क्वेरी करता हूँ:

  XDocument xml; XmlTextReader xtr = नया XmlTextReader (this.pathXML); Xtr.Normalization = false; Xml = XDocument.Load (xtr, लोडओपॉशन.परस्वाइवस्पेस); xtr.Close (); Var nodeToEdit = xml.Descendants ("ईवेंट")। जहां (x = & gt; (स्ट्रिंग) x.Attribute ("id") == "0");  

मैं कैसे उपयोगकर्ता इनपुट के साथ मेरी XML फ़ाइल को हेरफेर करता हूं:

  स्ट्रिंग userinput = "& lt; br / & gt; break" के साथ पाठ; // यह पाठ बॉक्स नियंत्रण के माध्यम से प्रपत्र फोरेश (नोडटॉइडिट। एलेमेंट्स () में (var आइटम) से पढ़ा जाता है {if (item.Name == "content") {item.Value = userinput; }}  

मैं कैसे बचा सकता हूँ:

  changeSaveIndent (xml, this.pathXML); सार्वजनिक स्थैतिक शून्य परिवर्तन सेवइंडेंट (XDocument x, स्ट्रिंग पथ) {XmlWriterSettings सेटिंग्स = नया XmlWriterSettings (); Settings.Indent = true; // टैब से इंडेंट इसे "" या इसी प्रकार की सेटिंग्स में बदला जा सकता है। इंडेंट चेर्स = "\ t"; (एक्सएमएलआर लेखक लेखक = XmlTextWriter.Create (पथ, सेटिंग्स)) का उपयोग कर {x.Save (लेखक); }}  

मेरी अपेक्षित XML आउटपुट फाइल इस तरह दिखनी चाहिए:

  & lt; इवेंट & gt; & Lt; इवेंट id = "0" & ​​gt; & Lt; content & gt; टेक्स्ट के साथ & lt; br / & gt; तोड़ & lt; / सामग्री & gt; & Lt; / घटना & gt; & Lt; / घटनाओं & gt;  

लंबे पोस्ट के लिए खेद है।

इसे बदलें:

<पूर्व> यदि (item.Name == "सामग्री") {item.Value = userinput; }

इस के साथ:

  यदि (item.Name == "सामग्री") {item.ReplaceWith (XElement.Parse ("& lt; content & gt; "+ Userinput +" & lt; / सामग्री & gt; ")); }  

बस ध्यान दें कि आपके उपयोगकर्ता इनपुट को इस कार्य के लिए वैध XML होना होगा। यदि नहीं, तो आप संभवतया XElement को कॉल को तोड़ने में सबसे अच्छा होगा। एक कोशिश पकड़ ब्लॉक में पर्स या बस अनजैड सीडीएटीए के रूप में इनपुट को जोड़ना, जैसे:

  if (item.Name == "सामग्री") {item.Value = ""; Item.Add (नया XCData (userinput)); }  

एक्सएमएल का निर्माण होगा जो इस तरह दिखता है:

  ... & lt; सामग्री & gt; & lt;! [सीडीएटीए [& lt; br / & gt; तोड़]] & gt; & lt; / सामग्री & gt; ...  

No comments:

Post a Comment