2010-07-16 54 views
0

问:XSI和xmlns 我使用的是序列化的字典类,发现在
http://weblogs.asp.net/pwelter34/archive/2006/05/03/444961.aspx
,序列化的字典。
它适用于下面的示例类。如何正确删除xmln:从XML字典系列化XSD

<System.Xml.Serialization.XmlRoot("ccl")> _ 
Public Class ccl 
    <System.Xml.Serialization.XmlElement("name")> _ 
    Public xx As String = "" 

    <System.Xml.Serialization.XmlElement("date")> _ 
    Public yy As String = "" 


    '<System.Xml.Serialization.XmlElement("adict")> _ 
    'Public ww As New SerializableDictionary(Of String, String) 

End Class 

但它增加了一个血腥的 的xmlns:XSI = “http://www.w3.org/2001/XMLSchema-instance和xmlns:XSD =” http://www.w3.org/2001/XMLSchema的? 到标签

现在我固定它通过改变字典类

 Dim ns As System.Xml.Serialization.XmlSerializerNamespaces = New System.Xml.Serialization.XmlSerializerNamespaces() 
     'Add an empty namespace and empty value 
     ns.Add("", "") 

     If True Then 
      valueSerializer.Serialize(writer, value, ns) 
     Else 
      valueSerializer.Serialize(writer, value) 
     End If 

其删除这些属性。

但这也意味着如果我指定它们,它不会写入它们。 如何使用属性将这两个空名称空间添加到类中?

我改成了

<System.Xml.Serialization.XmlRoot("ccl", Namespace:="")> _ 

,但似乎并没有工作。

+0

代码你能改写了一下?我不确定你想要达到什么。 – Grzenio 2010-07-16 13:47:50

回答

1

下面是我用序列化到我的对象o

XmlSerializerNamespaces XSN = new XmlSerializerNamespaces(); 
XSN.Add("", ""); 
XmlWriterSettings XWS = new XmlWriterSettings(); 
XWS.OmitXmlDeclaration = true; 
StringBuilder XmlStr = new StringBuilder(); 
XmlSerializer x = new XmlSerializer(o.GetType()); 
x.Serialize(XmlTextWriter.Create(XmlStr, XWS), o, XSN); 
+0

不是OmitXmlDeclaration,只需省略xmlns:xsi和xmlns:xsd属性 – 2010-07-23 10:28:08