tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^18: XMLのデータ追加について
投稿日: 2008/05/16(Fri) 15:39
投稿者魔界の仮面弁士
# そして今回も、XML 文法違反のようで……。(^^;)

> YuOさんの方法でやってみましたが・・う〜・うまくいかないです。
一文字削れば動くと思いますよ。

>> For Each node As XmlNode In xmlDoc.SelectNodes("root/data2/con")
ではなく、
   For Each node As XmlNode In xmlDoc.SelectNodes("root/data/con")
に。

> 結局、カウントをとって毎回、FirstChildを見て更新する方法にしてみました。
カウントを取るなら、
  Dim children As XmlNodeList = xmlDoc.SelectNodes("root/data/con")
  For N As Integer = 0 To children.Count - 1
      PrNode.AppendChild(children(N))
  Next
かな。


> Dim ChdNode As XmlNode = xmlDoc.SelectSingleNode("root/data")    
> Dim intCnt As Integer = ChdNode.ChildNodes.Count
この方法の場合、テキストノードも含まれる事に注意してください。
 Dim xmlDoc As New XmlDocument()
 xmlDoc.PreserveWhitespace = True  '空白の保持
 xmlDoc.Load("C:\sample.xml")
のように、PreserveWhitespace = True / False の影響を受けます。


ChdNode の内容が
<data>
  <con id="1">aaa</con>
  <con id="2">bbb</con>
</data>
の場合、data の子ノードは 5 つです。(改行、con、改行、con、改行)

ChdNode の内容が
<data><con id="1">aaa</con><con id="2">bbb</con></data>
の場合で、data の子ノードは 2 つです。(con、con)


> <data id="100">rrr</data>
> のElementを作成して
作成する所まではできましたでしょうか? CreateNode を使えば生成する事ができます。
あるいは、CreateElement や CreateAttribute などでも OK です。

>  <data2 id="3">ccc</data2>
> の直前にinsertする、というようなロジックを組みましたが、これも
> うまくいきません。
まず、その data2 ノードを取得する方法さえわかれば、
  Dim target As XmlNode = ???
 target.ParentNode.InsertBefore(newNode, target)
のように書くことができますね。

> <root>タグの<data>ノードの中で一番最後のもの、
Dim a As XmlNode = xmlDoc.SelectSingleNode("/root/data[position()=last()]")
または
Dim a As XmlNode = xmlDoc.SelectSingleNode("/root/data[last()]")

> <root>タグの<data2>ノードの中で一番最初のもの
Dim b As XmlNode = xmlDoc.SelectSingleNode("/root/data2")
または
Dim b As XmlNode = xmlDoc.SelectSingleNode("/root/data2[position()=1]")
または
Dim b As XmlNode = xmlDoc.SelectSingleNode("/root/data2[1]")

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。