Share via


XML 클래스 버전 1.1에서 마이그레이션

업데이트: November 2007

.NET Framework 버전 1.1의 이후 버전에서는 XML 클래스가 많이 업데이트되었습니다. 새 기능을 완전히 활용하려면 기존 코드를 새 API로 이동해야 합니다. 이 문서의 다음 단원에서는 기존 코드를 업그레이드하도록 하는 기존 API의 변경 사항에 대해 설명합니다.

Microsoft .NET Framework 버전 3.5에는 XML 데이터를 처리하기 위한 새 옵션이 포함되어 있습니다. 옵션에 대한 자세한 내용은 LINQ to XML을 참조하십시오.

XmlReader 만들기

.NET Framework 버전 2.0의 도입으로 XmlReader 개체는 XmlReader 클래스의 정적 Create 메서드를 사용하여 만듭니다. XmlReaderSettings 개체는 만들어진 XmlReader가 지원할 기능을 지정합니다.

참고:

.NET Framework에는 XmlTextReader, XmlNodeReader, XmlValidatingReader 클래스 등 XmlReader 클래스의 구체적 구현이 포함되어 있지만 Create 메서드를 사용하여 XmlReader 인스턴스를 만드는 것이 좋습니다. 그러면 XmlReader 클래스에 추가된 새 기능을 모두 활용할 수 있습니다.

버전 1.1

다음 코드는 공백을 무시하는 XmlTextReader 개체를 만들고 XmlUrlResolver 개체를 사용하여 파일 이름 URI를 확인합니다.

' Supply the credentials necessary to access the Web server.
Dim resolver As New XmlUrlResolver()
resolver.Credentials = CredentialCache.DefaultCredentials

' Create the XmlTextReader.
Dim reader As New XmlTextReader("https://serverName/data/books.xml")
reader.WhitespaceHandling = WhitespaceHandling.None
reader.XmlResolver = resolver
// Supply the credentials necessary to access the Web server.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = CredentialCache.DefaultCredentials;

// Create the XmlTextReader.
XmlTextReader reader = new XmlTextReader("https://serverName/data/books.xml");
reader.WhitespaceHandling = WhitespaceHandling.None;
reader.XmlResolver = resolver;

버전 2.0

다음 코드는 Create 메서드를 사용하여 이전 예제와 동일한 구성으로 XmlReader 개체를 만듭니다.

' Supply the credentials necessary to access the Web server.
Dim resolver As New XmlUrlResolver()
resolver.Credentials = CredentialCache.DefaultCredentials

' Create the XmlReader.
Dim settings As New XmlReaderSettings()
settings.IgnoreWhitespace = True
settings.XmlResolver = resolver
Dim reader As XmlReader = XmlReader.Create("https://serverName/data/books.xml", settings)
// Supply the credentials necessary to access the Web server.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = CredentialCache.DefaultCredentials;

// Create the XmlReader.
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = true;
settings.XmlResolver = resolver;
XmlReader reader = XmlReader.Create("https://serverName/data/books.xml", settings);

자세한 내용은 XML 판독기 만들기를 참조하십시오.

XML 유효성 검사

.NET Framework 버전 2.0의 도입으로 XmlValidatingReaderXmlSchemaCollection 클래스는 사용되지 않습니다. 대신 XmlReaderSettings 클래스를 사용하여 유효성을 검사하는 XmlReader 개체를 만들어야 합니다. XmlSchemaCollection 클래스는 XmlSchemaSet 클래스로 대체되었습니다.

버전 1.1

다음 코드는 XmlValidatingReaderXmlSchemaCollection 클래스를 사용하여 데이터의 유효성을 검사합니다.

Dim reader As New XmlValidatingReader(New XmlTextReader("books.xml"))
reader.ValidationType = ValidationType.Schema
reader.Schemas.Add("urn:books", "books.xsd")
AddHandler reader.ValidationEventHandler, AddressOf ValidationCallBack
While reader.Read()
End While
XmlValidatingReader reader = new XmlValidatingReader(new XmlTextReader("books.xml"));
reader.ValidationType = ValidationType.Schema;
reader.Schemas.Add("urn:books", "books.xsd");
reader.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);
while (reader.Read());
Private Shared Sub ValidationCallBack(ByVal sender As Object, ByVal e As ValidationEventArgs) 
  Console.WriteLine("Validation Error: {0}", e.Message)  
End Sub 'ValidationCallBack
private static void ValidationCallBack(object sender, ValidationEventArgs e) {
    Console.WriteLine("Validation Error: {0}", e.Message);
}

버전 2.0

다음 코드는 XmlReaderXmlSchemaSet 클래스를 사용하여 데이터의 유효성을 검사합니다.

Dim settings As New XmlReaderSettings()
settings.ValidationType = ValidationType.Schema
settings.Schemas.Add("urn:books", "books.xsd")
AddHandler settings.ValidationEventHandler, AddressOf ValidationCallBack
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
While reader.Read()
End While
XmlReaderSettings settings = new XmlReaderSettings();
settings. ValidationType = ValidationType.Schema;
settings.Schemas.Add("urn:books", "books.xsd");
settings.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);
XmlReader reader = XmlReader.Create("books.xml",settings);
while (reader.Read());
Private Shared Sub ValidationCallBack1(ByVal sender As Object, ByVal e As ValidationEventArgs) 
  Console.WriteLine("Validation Error: {0}", e.Message)  
End Sub 'ValidationCallBack1
private static void ValidationCallBack1(object sender, ValidationEventArgs e) {
    Console.WriteLine("Validation Error: {0}", e.Message);
}

자세한 내용은 XmlReader를 사용하여 XML 데이터의 유효성 검사스키마 컴파일을 위한 XmlSchemaSet을 참조하십시오.

XmlWriter 만들기

.NET Framework 버전 2.0의 도입으로 XmlWriter 개체는 XmlWriter 클래스의 정적 Create 메서드를 사용하여 만듭니다. XmlWriterSettings 개체는 만들어진 XmlWriter가 지원할 기능을 지정합니다.

참고:

.NET Framework에는 XmlWriter 클래스를 구현한 것으로 XmlTextWriter 클래스가 포함되어 있지만 Create 메서드를 사용하여 XmlWriter 개체를 만드는 것이 좋습니다. 그러면 XmlWriter 클래스에 추가된 새 기능을 모두 활용할 수 있습니다.

버전 1.1

다음 코드는 특정 인코딩을 사용하여 XmlTextWriter 개체를 만듭니다.

Dim writer As New XmlTextWriter("books.xml", Encoding.Unicode)
writer.Formatting = Formatting.Indented
XmlTextWriter writer = new XmlTextWriter("books.xml", Encoding.Unicode);
writer.Formatting = Formatting.Indented;

버전 2.0

다음 코드는 Create 메서드를 사용하여 이전 예제와 동일한 구성으로 XmlWriter 개체를 만듭니다.

Dim settings As New XmlWriterSettings()
settings.Indent = True
settings.Encoding = Encoding.Unicode
Dim writer As XmlWriter = XmlWriter.Create("books.xml", settings)
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.Encoding = Encoding.Unicode;
XmlWriter writer = XmlWriter.Create("books.xml", settings);

자세한 내용은 XML 작성기 만들기를 참조하십시오.

XSLT 처리

XslCompiledTransform 클래스는 새 XSLT 프로세서이며 XslTransform 클래스를 대체합니다. XsltSettings 열거형을 사용하면 포함 스크립트 또는 XSLT document() 함수 지원과 같은 선택적 XSLT 설정을 활성화할 수 있습니다.

버전 1.1

다음 코드는 XslTransform 클래스를 사용하여 XSLT 변환을 수행합니다.

' Create the XslTransform.
Dim xslt As New XslTransform()

' Create a resolver and set the credentials to use.
Dim resolver As New XmlUrlResolver()
resolver.Credentials = CredentialCache.DefaultCredentials

' Load the style sheet.
xslt.Load("https://serverName/data/xsl/sort.xsl", resolver)

' Transform the file.
Dim doc As New XPathDocument(filename)
Dim writer As New XmlTextWriter("output.xml", Nothing)
xslt.Transform(doc, Nothing, writer, Nothing)
// Create the XslTransform.
XslTransform xslt = new XslTransform();

// Create a resolver and set the credentials to use.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = CredentialCache.DefaultCredentials;

// Load the style sheet.
xslt.Load("https://serverName/data/xsl/sort.xsl", resolver);

// Transform the file.
XPathDocument doc = new XPathDocument(filename);
XmlTextWriter writer = new XmlTextWriter("output.xml", null);
xslt.Transform(doc, null, writer, null);

버전 2.0

다음 코드는 XslCompiledTransform 클래스를 사용하여 XSLT 변환을 수행합니다.

' Create the XslCompiledTransform object.
Dim xslt As New XslCompiledTransform()

' Create a resolver and set the credentials to use.
Dim resolver As New XmlUrlResolver()
resolver.Credentials = CredentialCache.DefaultCredentials

' Load the style sheet.
xslt.Load("https://serverName/data/xsl/sort.xsl", XsltSettings.Default, resolver)

' Transform the file.
Dim writer As XmlWriter = XmlWriter.Create("output.xml")
xslt.Transform("books.xml", writer)
// Create the XslCompiledTransform object.
XslCompiledTransform xslt = new XslCompiledTransform();

// Create a resolver and set the credentials to use.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = CredentialCache.DefaultCredentials;

// Load the style sheet.
xslt.Load("https://serverName/data/xsl/sort.xsl", XsltSettings.Default, resolver);

// Transform the file.
XmlWriter writer = XmlWriter.Create("output.xml");
xslt.Transform("books.xml", writer);

자세한 내용은 XslTransform 클래스에서 마이그레이션을 참조하십시오.

참고 항목

기타 리소스

XML 문서 및 데이터