방법: XML 리터럴 수정(Visual Basic)

Visual Basic은 XML 리터럴을 수정하는 편리한 방법을 제공합니다. 요소와 특성을 추가하거나 삭제할 수 있으며 기존 요소를 새 XML 요소로 바꿀 수도 있습니다. 이 항목에서는 기존 XML 리터럴을 수정하는 방법에 대한 몇 가지 예를 제공합니다.

XML 리터럴의 값을 수정하려면

  1. XML 리터럴의 값을 수정하려면 XML 리터럴에 대한 참조를 가져오고 Value 속성을 원하는 값으로 설정합니다.

    다음 코드 예는 XML 문서의 모든 <Price> 요소 값을 업데이트합니다.

    For Each book In From element In catalog.<Catalog>.<Book>
      book.<Price>.Value = (book.<Price>.Value * 1.05).ToString("#.00")
    Next
    

    다음은 이 코드 예의 샘플 원본 XML과 수정된 XML을 보여 줍니다.

    소스 XML:

    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101">
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <Price>44.95</Price>
      </Book>
      <Book id="bk331">
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <Price>45.95</Price>
      </Book>
    </Catalog>
    

    수정된 XML:

    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101">
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <Price>47.20</Price>
      </Book>
      <Book id="bk331">
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <Price>48.25</Price>
      </Book>
    </Catalog>
    

    참고 항목

    Value 속성은 컬렉션의 첫 번째 XML 요소를 나타냅니다. 컬렉션에 동일한 이름을 가진 요소가 두 개 이상 있는 경우 Value 속성을 설정하면 컬렉션의 첫 번째 요소에만 영향을 미칩니다.

XML 리터럴에 특성을 추가하려면

  1. XML 리터럴에 특성을 추가하려면 먼저 XML 리터럴에 대한 참조를 가져옵니다. 그런 다음 새 XML 특성 축 속성을 추가하여 특성을 추가할 수 있습니다. Add 메서드를 사용하여 XML 리터럴에 새 XAttribute 개체를 추가할 수도 있습니다. 다음 예제에서는 두 가지 옵션을 모두 보여줍니다.

    Dim newAttribute = "editorEmail"
    Dim editorID = "someone@example.com"
    For Each book In From element In catalog.<Catalog>.<Book>
      ' Add an attribute by using an XML attribute axis property.
      book.@genre = "Computer"
    
      ' Add an attribute to the Attributes collection.
      book.Add(New XAttribute(newAttribute, editorID))
    Next
    

    다음은 이 코드 예의 샘플 원본 XML과 수정된 XML을 보여 줍니다.

    소스 XML:

    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101" >
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <Price>44.95</Price>
      </Book>
      <Book id="bk331">
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <Price>45.95</Price>
      </Book>
    </Catalog>
    

    수정된 XML:

    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101" genre="Computer" editorEmail="someone@example.com">
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <Price>44.95</Price>
      </Book>
      <Book id="bk331" genre="Computer" editorEmail="someone@example.com">
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <Price>45.95</Price>
      </Book>
    </Catalog>
    

    XML 특성 축 속성에 대한 자세한 내용은 XML 특성 축 속성을 참조하세요.

XML 리터럴에 요소를 추가하려면

  1. XML 리터럴에 요소를 추가하려면 먼저 XML 리터럴에 대한 참조를 가져옵니다. 그런 다음 Add 메서드를 사용하여 새 XElement 개체를 요소의 마지막 하위 요소로 추가할 수 있습니다. AddFirst 메서드를 사용하여 새 XElement 개체를 첫 번째 하위 요소로 추가할 수 있습니다.

    다른 하위 요소를 기준으로 특정 위치에 새 요소를 추가하려면 먼저 인접한 하위 요소에 대한 참조를 가져옵니다. 그런 다음 AddBeforeSelf 메서드를 사용하여 인접한 하위 요소 앞에 새 XElement 개체를 추가할 수 있습니다. AddAfterSelf 메서드를 사용하여 인접한 하위 요소 뒤에 새 XElement 개체를 추가할 수도 있습니다.

    다음 예에서는 이러한 각 기술의 예를 보여 줍니다.

    Dim vbBook = From book In catalog.<Catalog>.<Book> 
                 Where book.<Title>.Value = 
                   "Developing Applications with Visual Basic .NET"
    
    vbBook(0).AddFirst(<Publisher>Microsoft Press</Publisher>)
    
    vbBook(0).Add(<PublishDate>2005-2-14</PublishDate>)
    
    vbBook(0).AddAfterSelf(<Book id="bk999"></Book>)
    
    vbBook(0).AddBeforeSelf(<Book id="bk000"></Book>)
    

    다음은 이 코드 예의 샘플 원본 XML과 수정된 XML을 보여 줍니다.

    소스 XML:

    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101" >
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <Price>44.95</Price>
      </Book>
      <Book id="bk331">
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <Price>45.95</Price>
      </Book>
    </Catalog>
    

    수정된 XML:

    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101" >
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <Price>44.95</Price>
      </Book>
      <Book id="bk000"></Book>
      <Book id="bk331">
        <Publisher>Microsoft Press</Publisher>
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <Price>45.95</Price>
        <PublishDate>2005-2-14</PublishDate>
      </Book>
      <Book id="bk999"></Book>
    </Catalog>
    

XML 리터럴에서 요소나 특성을 제거하려면

  1. XML 리터럴에서 요소나 특성을 제거하려면 다음 예에 표시된 대로 요소나 특성에 대한 참조를 가져오고 Remove 메서드를 호출합니다.

    For Each book In From element In catalog.<Catalog>.<Book>
      book.Attributes("genre").Remove()
    Next
    
    For Each book In From element In catalog.<Catalog>.<Book> 
                     Where element.@id = "bk999"
      book.Remove()
    Next
    

    다음은 이 코드 예의 샘플 원본 XML과 수정된 XML을 보여 줍니다.

    소스 XML:

    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101" genre="Computer" editorEmail="someone@example.com">
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <Price>44.95</Price>
      </Book>
      <Book id="bk000"></Book>
      <Book id="bk331" genre="Computer" editorEmail="someone@example.com">
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <Price>45.95</Price>
      </Book>
      <Book id="bk999"></Book>
    </Catalog>
    

    수정된 XML:

    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101" editorEmail="someone@example.com">
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <Price>44.95</Price>
      </Book>
      <Book id="bk000"></Book>
      <Book id="bk331" editorEmail="someone@example.com">
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <Price>45.95</Price>
      </Book></Catalog>
    

    XML 리터럴에서 모든 요소나 특성을 제거하려면 XML 리터럴에 대한 참조를 가져오고 RemoveAll 메서드를 호출합니다.

XML 리터럴을 수정하려면

  1. XML 요소의 이름을 변경하려면 먼저 요소에 대한 참조를 가져오세요. 그런 다음 새 이름을 가진 새 XElement 개체를 만들고 새 XElement 개체를 기존 XElement 개체의 ReplaceWith 메서드에 전달할 수 있습니다.

    바꾸려는 요소에 보존해야 하는 하위 요소가 있는 경우 새 XElement 개체의 값을 기존 요소의 Nodes 속성으로 설정합니다. 그러면 새 요소의 값이 기존 요소의 내부 XML로 설정됩니다. 그렇지 않으면 새 요소의 값을 기존 요소의 Value 속성으로 설정할 수 있습니다.

    다음 코드 예에서는 모든 <Description> 요소를 <Abstract> 요소로 바꿉니다. <Description> 요소의 콘텐츠는 <Description>XElement 개체의 Nodes 속성을 사용하여 새 <Abstract> 요소에 보존됩니다.

    For Each desc In From element In catalog.<Catalog>.<Book>.<Description>
      ' Replace and preserve inner XML.
      desc.ReplaceWith(<Abstract><%= desc.Nodes %></Abstract>)
    Next
    
    For Each price In From element In catalog.<Catalog>.<Book>.<Price>
      ' Replace with text value.
      price.ReplaceWith(<MSRP><%= price.Value %></MSRP>)
    Next
    

    다음은 이 코드 예의 샘플 원본 XML과 수정된 XML을 보여 줍니다.

    소스 XML:

    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101">
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <Price>44.95</Price>
        <Description>
          An in-depth look at creating applications
          with <technology>XML</technology>. For
          <audience>beginners</audience> or
          <audience>advanced</audience> developers.
        </Description>
      </Book>
      <Book id="bk331">
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <Price>45.95</Price>
        <Description>
          Get the expert insights, practical code samples, and best
          practices you need to advance your expertise with
          <technology>Visual Basic .NET</technology>.
          Learn how to create faster, more reliable applications
          based on professional, pragmatic guidance by today's top
          <audience>developers</audience>.
        </Description>
      </Book>
    </Catalog>
    

    수정된 XML:

    <?xml version="1.0"?>
    <Catalog>
      <Book id="bk101">
        <Author>Garghentini, Davide</Author>
        <Title>XML Developer's Guide</Title>
        <MSRP>44.95</MSRP>    <Abstract>
          An in-depth look at creating applications
          with <technology>XML</technology>. For
          <audience>beginners</audience> or
          <audience>advanced</audience> developers.
        </Abstract>
      </Book>
      <Book id="bk331">
        <Author>Spencer, Phil</Author>
        <Title>Developing Applications with Visual Basic .NET</Title>
        <MSRP>45.95</MSRP>    <Abstract>
          Get the expert insights, practical code samples, and best
          practices you need to advance your expertise with
          <technology>Visual Basic .NET</technology>.
          Learn how to create faster, more reliable applications
          based on professional, pragmatic guidance by today's top
          <audience>developers</audience>.
        </Abstract>
      </Book>
    </Catalog>
    

참고 항목