كيف يمكنني إضافة مساحة أثناء القيام XmlSerialization مع XmlWriter?

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

سؤال

أنا باستخدام XmlWriter بالتزامن مع Xml التسلسل.وأنا قادرة على إخراج XML جيد ولكن كيفية تضمين xmlns السمة مع XmlWriter يبدو أن تهرب مني.

لكتابة بداية الوثيقة التالية:

    Writer.WriteStartDocument();
    Writer.WriteStartElement("urlset","http://www.sitemaps.org/schemas/sitemap/0.9");

مع XmlWriter خلق ثم حلقة من خلال SitemapNodes خلقت لهم و يكتب لهم الأساسية بـ stringbuilder من خلال التسلسل مثل هذا:

    foreach (uk.co.andrewrea.SitemapNode node in List)
    {
        Serializer.Serialize(Writer, node);
    }

كما قلت هذا يعمل بشكل جيد ولكن فوق اسم العنصر الجذر هو غير المدرجة.في كل مرة أحاول أن بدنيا كتابة السمة ، xmlns, أحصل على استثناء أن xmlns محجوز من قبل نظام XML تستخدم أساسا أنا لا يمكن استخدام.

أنا أعرف كيفية القيام بذلك باستخدام XmlTextWriter و أيضا باستخدام XmlDocument الدرجة ولكن أريد أن أفهم كيف يمكنني تحقيق هذا باستخدام XmlWriter ومن خلال التسلسل.

التالية محاولة يلقي أيضا عدا عن أن مساحة كونها محفوظة.

foreach (uk.co.andrewrea.SitemapNode node in List)
{
      XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
      ns.Add("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9");

      Serializer.Serialize(Writer, node, ns);
}

Exception Details: System.ArgumentException: Prefix "xmlns" is reserved for use by XML.
هل كانت مفيدة؟

المحلول

يمكنك إضافة مساحة إلى XmlSerialization الصفات ، على سبيل المثال:

[XmlElement(
ElementName = "Members",
Namespace = "http://www.cpandl.com")]
public Employee[] Employees;

إذا كان لديك السيطرة على المدونة.

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