كيف يمكنني إيقاف xelement.save من الهرب من الشخصيات؟

StackOverflow https://stackoverflow.com/questions/2564396

  •  23-09-2019
  •  | 
  •  

سؤال

أنا أصاب ب XElement مع المعلومات وكتابتها إلى ملف XML باستخدام XElement.Save(path) طريقة. في مرحلة ما ، يتم هروب بعض الأحرف في الملف الناتج - على سبيل المثال ، > يصبح >.

هذا السلوك غير مقبول ، لأنني بحاجة إلى تخزين المعلومات في XML التي تتضمن > الحرف كجزء من كلمة المرور. كيف يمكنني كتابة المحتوى "الخام" لكائن XElement الخاص بي إلى XML دون أن يهرب هذه؟

هل كانت مفيدة؟

المحلول

عادة ما تسمح مواصفات XML > للظهور دون تكوين. XDocument يلعبه آمنًا ويهرب منه على الرغم من أنه يظهر في الأماكن التي لا يلزم فيها الهروب بشكل صارم.

يمكنك القيام باستبدال على XML المولدة. كن على دراية لكل http://www.w3.org/tr/rec-xml#syntax, ، إذا كان هذا يؤدي إلى أي ]]> التسلسلات ، لن تتوافق XML مع مواصفات XML. علاوة على ذلك، XDocument.Parse سوف يرفض في الواقع مثل هذا XML مع الخطأ ""]> "غير مسموح به في بيانات الأحرف.".

XDocument doc = XDocument.Parse("<test>Test&gt;Data</test>");
// Don't use this if it could result in any ]]> sequences!
string s = doc.ToString().Replace("&gt;", ">");
System.IO.File.WriteAllText(@"c:\path\test.xml", s);

بالنظر إلى أن أي محلل XML المتوافق مع المواصفات يجب أن يدعمه &gt;, ، أوصي بشدة بإصلاح الرمز الذي يقوم بمعالجة إخراج XML لبرنامجك.

نصائح أخرى

عدم وجود هذا السلوك أمر غير مقبول.

مستقل دون تكوين > هو XML غير صالح.
تم تصميم Xelement لإنتاج XML صالح.

إذا كنت ترغب في الحصول على تكييف المحتوى من العنصر ، استخدم Value منشأه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top