【问题标题】:Serializing BaseClass List without namespace序列化没有命名空间的基类列表
【发布时间】:2011-10-08 18:51:59
【问题描述】:

我有 BaseClass 列表

Public Class Package

  <XmlElement("OBJECT")>
  Public List As List(Of baseobj)
  Public Sub New()
    List = New List(Of baseobj)
    Dim f As New First()
    Dim s As New Second()
    List.Add(s)
    List.Add(f)
  End Sub

  Function Serialize() As String
    Dim XmlSerializer As New XmlSerializer(GetType(Package), "")
    Dim NS As New XmlSerializerNamespaces()
    Dim SB As New StringBuilder
    Dim str As New StringWriter(SB)
    NS.Add("", "")
    XmlSerializer.Serialize(str, Me, NS)
    Return SB.ToString
  End Function
End Class

基类

<XmlInclude(GetType(First))>
<XmlInclude(GetType(Second))>
Public MustInherit Class baseobj
  Public Common As String
  Public Sub New()
    Common = "_Common"
  End Sub
End Class

和驱动类

Public Class First
  Inherits baseobj
  <XmlAttribute("term")>
  Public FirstAttr As String

  Public Sub New()
    MyBase.New()
    FirstAttr = "FirstAttr"
  End Sub
End Class

Public Class Second
  Inherits baseobj
  <XmlAttribute("term")>
  Public SecAttr As String

  Public Sub New()
    MyBase.New()
    SecAttr = "SecAttr"
  End Sub
End Class

关于序列化包对象(pkg.Serialize)有这个:

<?xml version="1.0" encoding="utf-16"?>
<Package>
  <OBJECT d2p1:type="Second" term="SecAttr" xmlns:d2p1="http://www.w3.org/2001/XMLSchema-instance">
    <Common>_Common</Common>
  </OBJECT>
  <OBJECT d2p1:type="First" term="FirstAttr" xmlns:d2p1="http://www.w3.org/2001/XMLSchema-instance">
    <Common>_Common</Common>
  </OBJECT>
</Package>

如何将包对象序列化为

<?xml version="1.0" encoding="utf-16"?>
<Package>
  <OBJECT Type="Second" term="SecAttr" >
    <Common>_Common</Common>
  </OBJECT>
  <OBJECT Type="First" term="FirstAttr">
    <Common>_Common</Common>
  </OBJECT>
</Package>

没有命名空间和前缀

【问题讨论】:

    标签: .net serialization namespaces xml-serialization


    【解决方案1】:

    你不能那样做。 Type 属性从何而来?

    d2p1:type(通常写成xsi:type)是一个众所周知的属性,用于传达元素的实际类型。如果你能摆脱命名空间,那就没有意义了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      相关资源
      最近更新 更多