代码之家  ›  专栏  ›  技术社区  ›  RameshVel

如何从XML根元素中删除命名空间?

  •  5
  • RameshVel  · 技术社区  · 14 年前

    是否有一种从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>
    

    我不明白在xmlrootattribute中指定namsspace有什么用??

    1 回复  |  直到 14 年前
        1
  •  13
  •   Darin Dimitrov    14 年前

    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);
            }
        }
    }