การสร้าง XmlNode จาก XmlSerializer.Serialize

บทนำ

การทำงานกับการกำหนดค่าที่จัดเก็บในรูปแบบ XML สามารถช่วยประหยัดเวลาและความพยายามในหลายแอปพลิเคชัน โดยเฉพาะเมื่อใช้ไลบรารีคลาสที่จัดการข้อมูลการกำหนดค่า หากคุณกำลังพัฒนาแอปพลิเคชันใน C# ที่คุณต้องการจัดรูปแบบการกำหนดค่าที่กำหนดเองร่วมกับโครงสร้าง XML ที่มีอยู่ คุณอาจพบกับความท้าทายทั่วไป: คุณจะสร้าง XmlNode จากการเรียก XmlSerializer.Serialize ได้อย่างไร?

ในบล็อกโพสต์นี้ เราจะพาคุณไปผ่านกระบวนการที่ตรงไปตรงมาเพื่อให้บรรลุเป้าหมายนี้ ทำให้คุณสามารถขยายการกำหนดค่าที่อ่านจากไฟล์ XML โดยไม่ต้องแก้ไขไลบรารีคลาสต้นฉบับ

ความท้าทาย

ในหลายกรณี คุณอาจต้องการรวมการตั้งค่าการกำหนดค่าที่กำหนดเองเข้ากับโครงสร้าง XML ที่มีอยู่ ในขณะที่ใช้พลังของ XmlSerializer โครงการของคุณอาจเกี่ยวข้องกับ:

  • การทำการ Deserialize ไฟล์การกำหนดค่าลงในคลาสของคุณโดยใช้ XmlSerializer
  • การเพิ่มการกำหนดค่าที่กำหนดเองที่อาจไม่มีใน XML ต้นฉบับ
  • การจัดรูปแบบการกำหนดค่าที่รวมเข้าด้วยกันกลับเป็นรูปแบบ XML ใหม่

คำถามพื้นฐานที่นี่คือ: ฉันจะจัดรูปแบบวัตถุเป็น XmlNode โดยใช้ XmlSerializer ได้อย่างไร?

วิธีแก้ปัญหา

ในการตอบคำถามนี้ เราสามารถทำตามขั้นตอนเหล่านี้:

  1. จัดรูปแบบคลาสการกำหนดค่าที่กำหนดเองของคุณ
  2. ห่อหุ้มสตริงที่จัดรูปแบบใน XML
  3. โหลดเข้าไปใน XmlDocument

ขั้นตอนที่ 1: จัดรูปแบบคลาสการกำหนดค่าที่กำหนดเองของคุณ

เริ่มต้นด้วยการใช้ XmlSerializer เพื่อจัดรูปแบบวัตถุการกำหนดค่าที่กำหนดของคุณ ต่อไปนี้คือตัวอย่างโดยใช้คลาสการกำหนดค่าตัวอย่าง:

XmlSerializer xs = new XmlSerializer(typeof(MyConfig));
StringWriter xout = new StringWriter();
xs.Serialize(xout, myConfig); // 'myConfig' คืออินสแตนซ์ของ 'MyConfig'

ขั้นตอนที่ 2: ห่อหุ้มสตริงที่จัดรูปแบบใน XML

เมื่อคุณได้รับรูปแบบสตริงที่จัดรูปแบบแล้ว คุณต้องห่อหุ้มมันในโครงสร้าง XML ที่เหมาะสม สิ่งนี้สามารถทำได้โดยการสร้างองค์ประกอบรากสำหรับข้อมูลที่กำหนดของคุณ:

XmlDocument x = new XmlDocument();
x.LoadXml("<myConfig>" + xout.ToString() + "</myConfig>");

ขั้นตอนที่ 3: โหลดเข้าไปใน XmlDocument

ในจุดนี้ คุณได้สร้าง XmlDocument ที่มีโครงสร้างการกำหนดค่า XML ใหม่ของคุณ ตัวแปร x ตอนนี้ถือ XML ที่สมบูรณ์ซึ่งรวมการกำหนดค่าที่กำหนดเองของคุณไว้ด้วย

ตัวอย่างสมบูรณ์

นี่คือวิธีที่ทั้งกระบวนการรวมเข้าด้วยกันในสอดคล้องเดียว:

XmlSerializer xs = new XmlSerializer(typeof(MyConfig));
StringWriter xout = new StringWriter();
xs.Serialize(xout, myConfig);

XmlDocument x = new XmlDocument();
x.LoadXml("<myConfig>" + xout.ToString() + "</myConfig>");

// ตอนนี้ 'x' มี XmlNode ที่คุณต้องการ

สรุป

โดยการทำตามขั้นตอนเหล่านี้ คุณสามารถแปลงการกำหนดค่าที่จัดรูปแบบได้อย่างง่ายดายเป็นรูปแบบ XmlNode ซึ่งเหมาะสำหรับการจัดการต่อหรือติดต่อกับไฟล์ XML ที่มีอยู่ วิธีการที่กล่าวถึงข้างต้นช่วยให้แอปพลิเคชันของคุณยืดหยุ่นขณะทำงานร่วมกับโครงสร้างข้อมูล XML

หากคุณต้องการความช่วยเหลือเพิ่มเติมหรือวิธีการทางเลือกในการจัดการ XML ใน C# อย่าลังเลที่จะติดต่อ ขอให้สนุกกับการเขียนโค้ด!