এক্সএমএল ডকুমেন্ট ব্যবহার করে কীভাবে এক্সএমএল ডকুমেন্ট তৈরি করবেন?


85

এটি কীভাবে এক্সএমএল ডকুমেন্ট তৈরি করবেন?

<body>
  <level1>
    <level2>text</level2>
    <level2>other text</level2>
  </level1>
</body>

XmlDocumentসি # এ ব্যবহার করা হচ্ছে


8
ব্যবহারের XDocument পরিবর্তে stackoverflow.com/questions/4562571/...
Amiram Korach

উত্তর:


203

কি সম্পর্কে:

#region Using Statements
using System;
using System.Xml;
#endregion 

class Program {
    static void Main( string[ ] args ) {
        XmlDocument doc = new XmlDocument( );

        //(1) the xml declaration is recommended, but not mandatory
        XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration( "1.0", "UTF-8", null );
        XmlElement root = doc.DocumentElement;
        doc.InsertBefore( xmlDeclaration, root );

        //(2) string.Empty makes cleaner code
        XmlElement element1 = doc.CreateElement( string.Empty, "body", string.Empty );
        doc.AppendChild( element1 );

        XmlElement element2 = doc.CreateElement( string.Empty, "level1", string.Empty );
        element1.AppendChild( element2 );

        XmlElement element3 = doc.CreateElement( string.Empty, "level2", string.Empty );
        XmlText text1 = doc.CreateTextNode( "text" );
        element3.AppendChild( text1 );
        element2.AppendChild( element3 );

        XmlElement element4 = doc.CreateElement( string.Empty, "level2", string.Empty );
        XmlText text2 = doc.CreateTextNode( "other text" );
        element4.AppendChild( text2 );
        element2.AppendChild( element4 );

        doc.Save( "D:\\document.xml" );
    }
}

(1) একটি বৈধ এক্সএমএল ফাইলের জন্য কি কোনও এক্সএমএল ঘোষণা দরকার?
(২) স্ট্রিং.এম্পটি এবং "" (খালি স্ট্রিং) এর মধ্যে পার্থক্য কী?


ফলাফল হলো:

<?xml version="1.0" encoding="UTF-8"?>
<body>
  <level1>
    <level2>text</level2>
    <level2>other text</level2>
  </level1>
</body>

তবে আমি আপনাকে এক্সএমএল থেকে লিনকিউ ব্যবহার করার পরামর্শ দিচ্ছি যা এখানকার মতো সহজ এবং আরও পঠনযোগ্য:

#region Using Statements
using System;
using System.Xml.Linq;
#endregion 

class Program {
    static void Main( string[ ] args ) {
        XDocument doc = new XDocument( new XElement( "body", 
                                           new XElement( "level1", 
                                               new XElement( "level2", "text" ), 
                                               new XElement( "level2", "other text" ) ) ) );
        doc.Save( "D:\\document.xml" );
    }
}

4
প্রথম উদাহরণটি আমাকে এক্সএসএলটি স্টাইলশিটের জন্য একটি এক্সটেনশন ফাংশন লিখতে সহায়তা করেছিল , যা প্রসেসরে নোডের সেট দেয়। ধন্যবাদ!
কোডম্যানএক্স

4
আমি যুক্তি দিয়েছি যে আপনি যদি এটির XmlElementসাথে প্রতিস্থাপন করেন varতবে প্রথমটির সাথে কাজ করা আরও সহজ হবে
রবার্ট পেরি

1

উপরের অভিধান -> স্তরের সাথে কাজ করা আমার ক্ষেত্রে একটি অভিধান থেকে আসে (কেবল যদি কেউ এটির কাজে লাগে তবে) প্রথম উদাহরণটির চেষ্টা করে আমি এই ত্রুটিটির জন্য হোঁচট খেয়েছি: "এই নথিতে ইতিমধ্যে একটি 'ডকুমেন্টএলমেন্ট' নোড রয়েছে।" আমি এখানে উত্তর দ্বারা অনুপ্রাণিত হয়েছিল

এবং আমার কোড সম্পাদিত: (। xmlDoc DocumentElement .AppendChild (শরীরের))

//a dictionary:
Dictionary<string, string> Level2Data 
{
    {"level2", "text"},
    {"level2", "other text"},
    {"same_level2", "more text"}
}
//xml Decalration:
XmlDocument xmlDoc = new XmlDocument();
XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
XmlElement root = xmlDoc.DocumentElement;
xmlDoc.InsertBefore(xmlDeclaration, root);
// add body
XmlElement body = xmlDoc.CreateElement(string.Empty, "body", string.Empty);
xmlDoc.AppendChild(body);
XmlElement body = xmlDoc.CreateElement(string.Empty, "body", string.Empty);
xmlDoc.DocumentElement.AppendChild(body); //without DocumentElement ->ERR



foreach (KeyValuePair<string, string> entry in Level2Data)
{
    //write to xml: - it works version 1.
    XmlNode keyNode = xmlDoc.CreateElement(entry.Key); //open TAB
    keyNode.InnerText = entry.Value;
    body.AppendChild(keyNode); //close TAB

    //Write to xmml verdion 2: (uncomment the next 4 lines and comment the above 3 - version 1
    //XmlElement key = xmlDoc.CreateElement(string.Empty, entry.Key, string.Empty);
    //XmlText value = xmlDoc.CreateTextNode(entry.Value);
    //key.AppendChild(value);
    //body.AppendChild(key);
}

উভয় সংস্করণ (1 এবং 2 ফোরচ লুপের ভিতরে) আউটপুট দেয়:

<?xml version="1.0" encoding="UTF-8"?>
<body>
    <level1>
        <level2>text</level2>
        <level2>ther text</level2>
         <same_level2>more text</same_level2>
    </level1>
</body>

(দ্রষ্টব্য: অভিধানের তৃতীয় লাইন "একই স্তরের 2" অন্যান্য হিসাবে লেভেল 2ও হতে পারে তবে আমি অভিধানের সুবিধাটি আরও বাড়িয়ে তুলতে চেয়েছিলাম - আমার ক্ষেত্রে আমার বিভিন্ন নামের সাথে লেভেল 2 প্রয়োজন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.