특성 작성
WriteAttributeString, WriteStartAttribute 및 WriteAttributes 메서드는 특성을 만들기 위해 디자인되었습니다. 이러한 메서드를 사용하여 요소 노드에 특성을 작성할 수 있습니다. 특성 작성 메서드를 사용하여 요소에 네임스페이스 선언을 만들 수도 있습니다. 자세한 내용은 XmlWriter에서의 네임스페이스 처리를 참조하십시오.
WriteAttributeString
WriteAttributeString 메서드는 특성을 작성하는 가장 간단한 방법입니다. 이 메서드를 사용하여 문자열 값을 비롯한 전체 특성 노드를 작성할 수 있습니다. 다음 코드에서는 특성(supplierID)과 값(A23-1)을 XML 요소(Product)에 추가합니다:
Dim settings As New XmlWriterSettings()
settings.Indent = True
Using writer As XmlWriter = XmlWriter.Create(Console.Out, settings)
writer.WriteStartElement("Product")
writer.WriteAttributeString("supplierID", "A23-1")
writer.WriteElementString("ProductID", "12345")
writer.WriteEndElement()
End Using
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{
writer.WriteStartElement("Product");
writer.WriteAttributeString("supplierID", "A23-1");
writer.WriteElementString("ProductID", "12345");
writer.WriteEndElement();
}
위에 있는 코드의 결과는 콘솔에 다음과 같이 기록됩니다.
<Product supplierID="A23-1">
<ProductID>12345</ProductID>
</Product>
WriteStartAttribute
WriteStartAttribute 메서드는 WriteAttributeString 메서드의 고급 버전입니다. 이 메서드를 사용하면 여러 메서드 호출을 사용하여 특성 값을 작성할 수 있습니다. 예를 들어, WriteValue를 사용하여 형식화된 값을 작성할 수 있습니다.
WriteEndAttribute 메서드를 호출하여 이 특성을 닫습니다.
다음 코드에서 hireDate는 직원 고용 날짜가 포함된 DateTime 개체입니다. 이 코드에서는 6개월 간 직원 검토 날짜의 계산 값이 포함된 review-date 특성을 작성합니다.
Dim hireDate As New DateTime(2008, 5, 20)
Dim settings As New XmlWriterSettings()
settings.Indent = True
Using writer As XmlWriter = XmlWriter.Create(Console.Out, settings)
writer.WriteStartElement("Employee")
writer.WriteStartAttribute("review-date")
writer.WriteValue(hireDate.AddMonths(6))
writer.WriteEndAttribute()
writer.WriteElementString("EmployeeID", "12345")
writer.WriteEndElement()
End Using
DateTime hireDate = new DateTime(2008, 5, 20);
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{
writer.WriteStartElement("Employee");
writer.WriteStartAttribute("review-date");
writer.WriteValue(hireDate.AddMonths(6));
writer.WriteEndAttribute();
writer.WriteElementString("EmployeeID", "12345");
writer.WriteEndElement();
}
위에 있는 코드의 결과는 콘솔에 다음과 같이 기록됩니다.
<Employee review-date="2008-11-20T00:00:00">
<EmployeeID>12345</EmployeeID>
</Employee>
WriteAttributes
WriteAttributes 메서드를 사용하여 제공된 XmlReader 개체의 현재 위치에서 찾은 모든 특성을 복사할 수 있습니다. WriteAttributes 동작은 판독기가 현재 위치한 노드의 형식에 따라 다릅니다.
다음 표에서는 각 노드 형식에 대해 WriteAttributes를 호출한 결과에 대해 설명합니다. 판독기가 아래 표에 나열되지 않은 노드 형식에 있을 경우 WriteAttributes는 아무런 동작을 수행하지 않습니다.
노드 형식 |
WriteAttributes 동작 |
---|---|
특성 |
현재 특성을 작성한 후 요소를 닫는 태그 이전의 나머지 특성을 작성합니다. |
요소 |
요소가 포함하는 모든 특성을 작성합니다. |
XML 선언 |
선언의 모든 특성을 작성합니다. |
예를 들어, 다음 코드에서 작성기는 판독기의 현재 위치에 있는 모든 특성을 작성기로 복사합니다.
Dim reader As XmlReader = XmlReader.Create("book.xml")
reader.ReadToDescendant("book")
Dim settings As New XmlWriterSettings()
settings.Indent = True
Using writer As XmlWriter = XmlWriter.Create(Console.Out, settings)
writer.WriteStartElement("root")
writer.WriteAttributes(reader, True)
writer.WriteEndElement()
End Using
XmlReader reader = XmlReader.Create("book.xml");
reader.ReadToDescendant("book");
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{
writer.WriteStartElement("root");
writer.WriteAttributes(reader, true);
writer.WriteEndElement();
}
코드에서는 다음 예제 XML 파일(book.xml)을 사용합니다.
<?xml version="1.0" ?>
<book genre="autobiography"
publicationdate="1981"
ISBN="1-861003-11-0">Book Title</book>
위에 있는 코드의 결과는 콘솔에 다음과 같이 기록됩니다.
<root genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0" />