Как удалить пространство имен из корневого элемента XML? - PullRequest
5 голосов
/ 13 сентября 2010

есть простой способ удалить пространство имен из корневого элемента XML.Я пробовал с

[XmlRootAttribute("MCP", Namespace = "", IsNullable = false)]    

в сериализуемом классе.Но бесполезно.все еще получаю тот же результат.

пример класса

[Serializable]
[XmlRootAttribute("MCP", Namespace = "", IsNullable = false)]    
public class BINDRequest
{
    public BINDRequest()
    {

    }
    [XmlAttribute]
    public string CLIENT_REQUEST_ID { get; set; }

    public BINDRequestBody BIND { get; set; }

}

результат xml

<?xml version="1.0" encoding="utf-8"?>
<MCP xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" CLIENT_REQUEST_ID="1">
  <BIND CLIENT_ID="test" PASSWORD="test" />
</MCP>

тогда я не понимаю, зачем использовать указание namsespace в XmlRootAttribute ??

1 Ответ

13 голосов
/ 13 сентября 2010

Попробуйте это:

public class BINDRequest
{
    [XmlAttribute]
    public string CLIENT_REQUEST_ID { get; set; }
}

class Program
{
    static void Main()
    {
        var request = new BINDRequest
        {
            CLIENT_REQUEST_ID = "123"
        };
        var serializer = new XmlSerializer(request.GetType());
        var xmlnsEmpty = new XmlSerializerNamespaces();
        xmlnsEmpty.Add("", "");
        using (var writer = XmlWriter.Create("result.xml"))
        {
            serializer.Serialize(writer, request, xmlnsEmpty);
        }
    }
}
...