前提・実現したいこと
現在、C#を勉強中なのですが、XMLをC#で操作するプログラムを作成中に詰まってしまったので、質問させてください。
作成中のプログラムは、既にあるXMLファイルを読み込み、ある要素をReplaceWithメソッドで置換するというプログラムです。
デバッグに問題や例外等はないのですが、実行結果が自分の思っていた結果と違ったので、どこが間違っているのかも分からない状態です。何か勘違いしているのかもしれません。
期待していた結果は、読み込んだnovelists.xmlの4つ目の<novelist>タグ("宮沢 賢治")をC#側で作成したタグ("宮澤 賢治"の方)に置き換えることでしたが、当初の"宮沢 賢治"のままでした。
該当のソースコード
C#
1var xdoc = XDocument.Load(@"C:\Users\lifeg\Desktop\novelists.xml"); 2 3 var element = xdoc.Root.Elements() 4 .Single(x => x.Element("name").Value == "宮沢 賢治"); 5 string elmstring = 6 @"<novelist> 7 <name kana=""みやざわ けんじ"">宮澤 賢治</name> 8 <birth>1896-08-27</birth> 9 <death>1933-09-21</death> 10 <masterpieces> 11 <title>銀河鉄道の夜</title> 12 <title>注文の多い料理店</title> 13 </masterpieces> 14 </novelist>"; 15 var newElement = XElement.Parse(elmstring); 16 element.ReplaceWith(newElement); 17 18 Console.WriteLine(element.Element("name").Value); 19 20novelists.xmlの中身 21<?xml version="1.0" encoding="UTF-8"?> 22<novelists> 23 <novelist> 24 <name kana="なつめ そうせき">夏目 漱石</name> 25 <birth>1867-02-09</birth> 26 <death>1916-12-09</death> 27 <masterpieces> 28 <title>吾輩は猫である</title> 29 <title>坊ちゃん</title> 30 <title>こころ</title> 31 </masterpieces> 32 </novelist> 33 <novelist> 34 <name kana="かわばた やすなり">川端 康成</name> 35 <birth>1899-06-14</birth> 36 <death>1972-04-16</death> 37 <masterpieces> 38 <title>雪国</title> 39 <title>伊豆の踊子</title> 40 </masterpieces> 41 </novelist> 42 <novelist> 43 <name kana="だざい おさむ">太宰 治</name> 44 <birth>1909-06-19</birth> 45 <death>1948-06-13</death> 46 <masterpieces> 47 <title>斜陽</title> 48 <title>人間失格</title> 49 </masterpieces> 50 </novelist> 51 <novelist> 52 <name kana="みやざわ けんじ">宮沢 賢治</name> 53 <birth>1896-08-27</birth> 54 <death>1933-09-21</death> 55 <masterpieces> 56 <title>銀河鉄道の夜</title> 57 <title>風の又三郎</title> 58 </masterpieces> 59 </novelist> 60</novelists> 61
補足情報(FW/ツールのバージョンなど)
Visual Studioのバージョン
Microsoft Visual Studio Community 2019
Version 16.4.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/07 07:54