2016-07-01 4 views
1

Я пытаюсь выполнить сериализацию нескольких неполных публичных классов, сгенерированных с помощью инструмента xsd.exe.Сериализация XML для нескольких частных открытых классов

Я создал новые экземпляры для каждого класса, чтобы заполнить детали, но не могу их преобразовать в один XML-файл.

Dim id As New Identifier 'partial class 1 
    id.Identifier_Type = "Material" 
    id.Identifier_Value = "MAT/001" 
    Dim id2 As New id2   'partial class 2 
    id2.string = "stuff" 
    id2.string2 = "more" 
    id2.string3 = "Some Stuff" 
    Dim id3 As New id3   'partial class 3 
    id3.string ="type" 

    Dim serializer As New XmlSerializer(id.GetType) 

    Dim writer As TextWriter = New StreamWriter("c:\stack\text.xml") 

    serializer.Serialize(writer, id) 

    writer.Close() 

Все, что мне кажется, это один частичный класс, как я могу объединить их вместе?

Благодаря

ответ

0

Согласно XML standard, действительный файл XML должен иметь один и только один root element, например:

<Identifier> 
    <Identifier_Type>Material</Identifier_Type> 
    <Identifier_Value>MAT/001</Identifier_Value> 
</Identifier> 

Это звучит, как вы хотите создать файл XML с тремя последовательными независимыми корней, соответствующих Identifier, id2 и id3. Такой файл будет нарушать стандарт, поэтому XmlSerializer не предоставляет способ создания такого файла.

Вместо этого, вы должны создать тип контейнера для хранения других ваших типов и сериализации, что:.

Public Class IdContainer 
    Public Property Identifier() As Identifier 

    Public Property id2() As id2 

    Public Property id3() As id3 
End Class 

(Там может быть даже такой класс уже автоматически сгенерирован для вас xsd.exe Проверьте типы сгенерированных для любого использования всех трех типов идентификаторов.)

Образец fiddle.

+0

думаю, что у меня есть это, спасибо за вашу помощь! – DBC1

Смежные вопросы