2008-10-21 3 views
3

VB.NET에서 작은 응용 프로그램을 작성 중이며 일부 클래스가 XML에 "저장"기능을 수행 할 수 있도록 작성하고 싶습니다. 나는 XSD 파일을 XML에 쉽게 직렬화 할 수있는 VB 클래스를 생성하는 데 사용되는 것을 보았다. 내가 수업을 직접 작성하는 것처럼 필자가 준수해야 할 기존 XML 형식이 있다면 어떻게해야합니까? 당신이 그것을 만들기에 대해 질문 때문에VB.NET에서 XML Serialization 용이 한 객체를 작성하려면 어떻게해야합니까?

답변

6

http://www.jonasjohn.de/snippets/csharp/xmlserializer-example.htm 사용에서 System.Xml 및 System.Xml.Serialization 네임 스페이스를 내가 (C#을, 미안하지만 당신은 요점을 얻을 것이다) 빨리 찾을 수 있습니다. 클래스의 멤버에 해당 태그를 주석으로 추가하는 데 사용할 수있는 클래스를 설명합니다.

예를 들어 (C에서 #) :

[XmlRoot("foo")] 
public class Foo 
{ 
    [XmlAttribute("bar")] 
    public string bar; 
    [XmlAttribute("baz")] 
    public double baz; 
} 

또는 VB.NET에서

은 (완전히 문법적으로 정확하지 않을 수도는) :

<XmlRoot ("foo")> _ 
Public Class Foo 
    <XmlAttribute ("bar")>_ 
    Public bar As String 
    <XmlAttribute ("baz")>_ 
    Public baz As String 
End Class 

그런 다음 출력 XML로 XmlSerializer 클래스를 사용할 수 있습니다. C#에서

:

using(XmlSerializer xmls = new XmlSerializer(typeof(Foo)){ 
    TextWriter tw = new StreamWriter("foo.xml"); 
    //use it! 
} 

또는 VB :

Using xmls As New XmlSerializer(gettype(Foo)), _ 
    tw As TextWriter = New StreamWriter("foo.xml") 

    ''//use it! 
End Using 

Reference.

2

'쉽게', 그 뜻 도움말을 따라 세 가지 규칙은 매우 간단이 일을 계속하다 :

  1. 이 컬렉션을 사용하지 마십시오
  2. 직렬화있는 속성 유형을 사용 또는 배열을 직렬화해야하는 속성으로 사용하십시오.
  3. "나쁜"부작용이있는 속성을 사용하지 마십시오. '나쁘다'는 말은 대개 동일한 기본 필드가 뒷받침하는 두 개의 공용 속성을 의미합니다.

이 규칙을 어기면 클래스를 직렬화 할 수 있지만 더 많은 작업이 필요할 수 있습니다.

항목 # 2의 경우 빠른 수정은 직렬화 가능하므로 데이터 테이블 또는 데이터 세트를 사용하고 있습니다.

0

간단한 '저장'기능을 사용하려면 .net xml serialization [1]을 사용하거나 메모리 DateSet에서 자신을 생성하여 원하는만큼 많은 DateTables에 '세계의 상태'를 유지하십시오. 그것은 당신이 유지하려고하는 객체 모델이 얼마나 복잡한 지에 달려 있습니다.

[1] 간단한 예를

관련 문제