タグ: VB.net XML LINQ

XDocumentによるXMLの作成

サンプルコード

Sub Main()
  Dim doc As New XDocument()
 
  'XML宣言の作成   
  Dim Dec As New XDeclaration("1.0", "UTF-8", True)
  doc.Declaration = Dec
 
  'ルートノードを追加   
  Dim root As New XElement("root")
  doc.Add(root)
 
  'とりあえずエレメントを追加   
  Dim Item1 As New XElement("Item1")
  Dim attr1 As New XAttribute("attr", "普通の方法で属性追加")
  Dim Item1Text As New XText("普通の方法で追加")
  Item1.Add(attr1)
  root.Add(Item1)
 
  'さらに子エレメントを追加   
  Dim Item1Child As New XElement("childItem")
  Item1Child.Value = "ちょっと無精して追加"
  Item1.Add(Item1Child)
 
  '属性を簡単に追加   
  Dim Item2 As New XElement("Item2")
  Item2.SetAttributeValue("attr", "一緒に作成")
  root.Add(Item2)
 
  '任意の位置に追加   
  Dim Item3 As New XElement("Item3")
  Item3.SetAttributeValue("attr", "rootの最初に追加")
  root.AddFirst(Item3)
 
  Dim Item4 As New XElement("Item4")
  Item4.SetAttributeValue("attr", "Item2の後に追加")
  Item2.AddAfterSelf(Item4)
 
  Dim Item5 As New XElement("Item5")
  Item5.SetAttributeValue("attr", "Item2の前に追加")
  Item2.AddBeforeSelf(Item5)
 
  'コメントを追加   
  Dim comment As New XComment("これがコメントです")
  root.Add(comment)
 
  'さらに新スタンスの作成時の引数にオブジェクトを指定することも可能
  Dim Item6 As New XElement("Item6", New XAttribute("attr", "オブジェクトで作成"), _
                                     New XElement("Item6.child1", "Item6の子ノード1です"), _
                                     "Item6の値です")
  root.Add(Item6)
 
  '最後に保存   
  doc.Save("C:\sample1.xml")
End Sub
<!ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー作成されたXMLーーーーーーーーーーーーーーーーーーーーーーーーー->
<?xml version="1.0" encoding="utf-8"?>
<root>
  <Item3 attr="rootの最初に追加" />
  <Item1 attr="普通の方法で属性追加">
    <childItem>ちょっと無精して追加</childItem>
  </Item1>
  <Item5 attr="Item2の前に追加" />
  <Item2 attr="一緒に作成" />
  <Item4 attr="Item2の後に追加" />
  <!--これがコメントです-->
  <Item6 attr="オブジェクトで作成">
    <Item6.child1>Item6の子ノード1です</Item6.child1>Item6の値です</Item6>
</root>

XMLを直接書き込みXMLを作成する

サンプルコード

Sub Main()
  Dim doc As New XDocument( _
    <?xml version="1.0" encoding="utf-8"?>
    <root>
      <Item3 attr="rootの最初に追加"/>
      <Item1 attr="普通の方法で属性追加">
        <childItem>ちょっと無精して追加</childItem>
      </Item1>
      <Item5 attr="Item2の前に追加"/>
      <Item2 attr="一緒に作成"/>
      <Item4 attr="Item2の後に追加"/>
      <!--これがコメントです-->
      <Item6 attr="オブジェクトで作成">
        <Item6.child1>Item6の子ノード1です</Item6.child1>
        Item6の値です
      </Item6>
    </root>)
  doc.Save("C:\sample1.xml")
End Sub

この出力結果は上のXMLと同じです。