このコードは、私が生成した XDocument を受け取り、XML ファイルとして保存します。
static void Main(string[] args)
{
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("title", "Ny Aftale");
dic.Add("paragraph0", "Some text here");
dic.Add("paragraph1", "Some more text on a new line here");
dic.Add("paragraph2", "<list>\t\n<li>A point</li>\n<li>another point</li></list>");
dic.Add("header", "<author>Mads</author>\n<date>" + new DateTime().ToShortDateString() + "</date>\n<subject>Ny HIF Aftale</subject>");
XDocument xd = WordFileGenerator.Parse(dic);
string path = "C:\\Users\\Vipar\\Desktop";
using (var writer = new XmlTextWriter(path + "\\test.xml", new UTF8Encoding(false)))
{
xd.Save(writer);
};
}
問題は、このディクショナリ内のネストされたタグ (ディクショナリを XML ドキュメントに作成したため、質問しないでください) が、想定されているものとは別の表現になっていることです。上記の辞書を考えると、出力として得られるものは次のとおりです。
<document>
<title>Ny Aftale</title>
<paragraph>Some text here</paragraph>
<paragraph>Some more text on a new line here</paragraph>
<paragraph>
<list>
<li>A point</li>
<li>another point</li></list>
</paragraph>
<header>
<author>Mads</author>
<date>01-01-0001</date>
<subject>Ny HIF Aftale</subject>
</header>
</document>
これを生成するために使用するコードは次のようになります。
public static XDocument Parse(Dictionary<String, String> dic)
{
XDocument newXDoc = new XDocument();
newXDoc.Add(new XElement("document",
new XElement("title", dic["title"]),
dic.Where((kvp) => kvp.Key.ToLower().StartsWith("paragraph"))
.Select(kvp => new XElement(kvp.Key.Substring(0,9), kvp.Value)),
new XElement("header", dic["header"])
)
);
return newXDoc;
}
XDocument に情報を配置すると、奇妙な変換が発生します。
このネストされたタグの問題を修正するにはどうすればよいですか?