Пользовательская сериализация XML с помощью x:

#c# #.net #xml #file

Вопрос:

Я пытаюсь сгенерировать/сериализовать XML-файл с пользовательским тегом на C#, и хотя я перепробовал несколько решений, я не смог найти приемлемого решения, я буду признателен за любой вклад. Файл должен выглядеть так:

 <?xml version="1.0" encoding="utf-8"?>
  <x:Todo>
    <Id>1</Id>
    <x:UserId>27</UserId>
 </Todo>
 

Проблема в том, что я понятия не имею, как добавить x: в тег в узлах специфики.

Заранее благодарю вас за все ваши вклады. Я

Ответ №1:

Вам нужно определить пространство имен и использовать его, вот пример (отсюда):

 using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

public class Run
{
    public static void Main()
    {
        Run test = new Run();
        test.SerializeObject("XmlNamespaces.xml");
    }

    public void SerializeObject(string filename)
    {
        XmlSerializer s = new XmlSerializer(typeof(Book));
        // Writing a file requires a TextWriter.
        TextWriter t = new StreamWriter(filename);

        /* Create an XmlSerializerNamespaces object and add two
        prefix-namespace pairs. */
        XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
        ns.Add("x", "http://www.cpandl.com");

        // Create a Book instance.
        Book b = new Book();
        b.TITLE = "A Book Title";
        s.Serialize(t, b, ns);
        t.Close();
    }
}

[XmlType(Namespace = "http://www.cpandl.com")]
public class Book
{
    [XmlElement(Namespace = "http://www.cpandl.com")]
    public string TITLE;
}