linqを使用して名前がFooと等しいMyNodeを見つけ、そのノードのコピーを作成してXMLに追加しようとしていますが、新しいノードの名前はBarである必要があり、ファイルを保存します。
<?xml version="1.0" encoding="utf-8"?>
<MyRoot>
<MyNode Name="Foo">
<Data Type="String">ABC</Data>
</MyNode>
</MyRoot>
このコードはノードを見つけます
Dim doc As XDocument = XDocument.Load(xmlFile)
Dim sheet = From item In doc...<MyRoot>...<MyNode> Select item Where item.@Name = "Foo"
これを使用してノードを追加し、名前を変更しようとしています。
sheet.@Name = "Bar" 'After excecuting this, sheet becomes "Nothing"
doc.Root.Add(sheet.First)
doc.Save(outFile)
ただし、sheet。@ Nameを「Bar」に設定すると、sheetはNothingになります。その行をコメントアウトすると、出力には2つのノードがあり、どちらもBarという名前です。属性を変更するか、これをXDocumentに追加する(またはその両方)という点で、これを「正しい方法」で行っていないのではないかと思います。