投稿者 mayopee  (社会人) 投稿日時 2018/9/3 14:52:48
魔界の仮面弁士様、返信ありがとうございます。 

XmlDocument版
>Dim value2 As String = xmlDoc.SelectSingleNode("/Root/ID/Name/text()")?.Value

XDocument版
>Dim value2 As String = Doc.CreateNavigator().SelectSingleNode("/Root/ID/Name/text()")?.Value

XPath式でTextノードを得るには、こんな書き方もできるのですね。
勉強になります。VB2010ですので、ご指摘通り「?.」の部分でコンパイラに怒られましたが
「?.」を消去すればTextノードがNothingでない要素については希望する結果を得られました。
NULL条件演算子( ?. )、とても便利そうですね!

>場合によっては CDATA セクション、コメント、処理命令などの

コメント以外、使った事も見た事もありません。CDATA セクションについては、Webで検索して
自分でXMLを作成する場合でも使えそうだと思いました。めったと、禁止文字を使う事はないけど
エスケープ文字はなんだっけ?となるよりいいかなという感想です。

DOM式とLINQ式についても、ご意見を頂き、ありがとうございます。
自分の場合、LINQ式を使う理由としてはXMLを読み込んで要素を編集、抽出する場合にLINQが
使えるXDocument/XElementの方が圧倒的に使い勝手が良い、コードも簡潔になって見通しが良い
という理由からです。
でも、今回ご指摘いただいたOfTypeやCastを使えばDOM式でもSelectやWhereが使えるのですね。

話題がちょっと脱線しましたが、当初の疑問は解決しましたので、これで解決とさせていだだきます。
私の発言に反応があるかもしれないので、解決マークはしばらく未チェックにしておきます。