タグ: VB.net XML LINQ

普通に追加する方法

サンプルコード

Sub Main()
Dim sitemap As XNamespace = "http://www.sitemaps.org/schemas/sitemap/0.9"
Dim root As New XElement(sitemap + "root", _
                            New XElement(sitemap + "Child", "child content"))
root.Save("C:\sample.xml")
End Sub

----------出力XML-------------
<?xml version="1.0" encoding="utf-8"?>
<root xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <Child>child content</Child>
</root>

複数の空間指名を共存させる

サンプルコード

Sub Main()
  Dim sitemap As XNamespace = http://www.sitemaps.org/schemas/sitemap/0.9"
  Dim xhtml As XNamespace = "http://www.w3.org/1999/xhtml"
  Dim root As New XElement(sitemap + "root", _
                            New XAttribute(XNamespace.Xmlns + "sitemap", sitemap), _
                            New XAttribute(XNamespace.Xmlns + "xhtml", xhtml), _
                               New XElement(sitemap + "Child", "SiteMap content"), _
                               New XElement(xhtml + "Child", "xhtml content"))
  root.Save("C:\sitemap.xml")
End Sub

----------出力XML-------------
<?xml version="1.0" encoding="utf-8"?>
<sitemap:root xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <sitemap:Child>SiteMap content</sitemap:Child>
  <xhtml:Child>xhtml content</xhtml:Child>
</sitemap:root>

事前アトミック化

事前アトミック化とは、XMLを作成する前に、文字列を"XName"オブジェクトに割り当てます。コンストラクタに文字列を渡す代わりに、先程割り当てをした"XName"オブジェクトを渡します。

サンプルコード

Sub Main()
  Dim sitemap As XNamespace = "http://www.sitemaps.org/schemas/sitemap/0.9"
  Dim RootName As XName = sitemap + "root"
  Dim childName As XName = sitemap + "Child"
  Dim root As New XElement(RootName, New XAttribute(XNamespace.Xmlns + "sitemap", sitemap), _
                            New XElement(childName, "Child", New XAttribute("id", "1")), _
                            New XElement(childName, "Child", New XAttribute("id", "2")))

  root.Save("C:\sitemap.xml")
End Sub

----------出力XML-------------
<?xml version="1.0" encoding="utf-8"?>
<sitemap:root xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap:Child id="1">Child</sitemap:Child>
  <sitemap:Child id="2">Child</sitemap:Child>
</sitemap:root>

簡単な書き方

サンプルコード

Sub Main()
  Dim root As New XElement("{http://www.sitemaps.org/schemas/sitemap/0.9}root", _
                              New XElement("{http://www.sitemaps.org/schemas/sitemap/0.9}Child", New XAttribute("id", "1")), _
                              New XElement("Child", New XAttribute("id", "2")))
  root.Save("C:\sitemap.xml")

  'さらにシンプルに
  Dim root As New XElement(<root xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
                              <Child id="1">Child</Child>
                              <Child id="2">Child</Child>
                           </root>)

  root.Save("C:\sitemap.xml")
End Sub

----------出力XML-------------
<?xml version="1.0" encoding="utf-8"?>
<root xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <Child id="1" />
  <Child id="2" xmlns="" />
</root>