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

在字符串对象上序列化为空的默认xmlns

  •  0
  • webwires  · 技术社区  · 15 年前

     XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue));
    
            foreach (TKey key in this.Keys)
            {
                writer.WriteStartElement("item");
    
                writer.WriteStartElement("key");
                keySerializer.Serialize(writer, key);
                writer.WriteEndElement();
    
                writer.WriteStartElement("value");
                TValue value = this[key];
                valueSerializer.Serialize(writer, value, ns);
                writer.WriteEndElement();
    
                writer.WriteEndElement();
            }
    

    我试过在XmlSerializer上使用XmlSerializerNamespaces以及XmlAttributeOverrides,但我无法让它消失。我一直在

    <?xml version="1.0"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     <soap:Body>
      <GetSiteListPermissionsResponse xmlns="http://HDMenu">
       <GetSiteListPermissionsResult>
        <item>
         <key>
          <string xmlns="">http://devvm.local/second3/default.aspx</string>
         </key>
         <value>
          <string xmlns="">True</string>
         </value>
        </item>
       </GetSiteListPermissionsResult>
      </GetSiteListPermissionsResponse>
     </soap:Body>
    </soap:Envelope>
    
    2 回复  |  直到 15 年前
        1
  •  2
  •   Martin v. Löwis    15 年前

    使用 XmlSerializer constructor 这就需要一个默认的命名空间来解决这个问题。

        2
  •  0
  •   John Saunders KB22    15 年前