現在、XML ファイルに新しいノードを追加しています。ノードは少し動的にする必要があるため、StringBuilder を作成し、XmlWriter を使用してノードを作成しています。
StringBuilder newDateXML = new StringBuilder();
XmlWriter newDateXMLWriter = XmlWriter.Create(newDateXML, xmlWriterSettings);
newDateXMLWriter.WriteStartElement("Dates");
newDateXMLWriter.WriteElementString("type", "UNDEFINED");
newDateXMLWriter.WriteElementString("value", "YYYYMMDD");
newDateXMLWriter.WriteStartElement("additionalDateFields");
newDateXMLWriter.WriteStartElement("AdditionalDateFields");
newDateXMLWriter.WriteAttributeString("order", "1");
newDateXMLWriter.WriteElementString("type", "Original Type");
newDateXMLWriter.WriteElementString("value", "Date Added");
newDateXMLWriter.WriteEndElement();
newDateXMLWriter.WriteEndElement();
newDateXMLWriter.WriteEndElement();
newDateXMLWriter.Flush();
ノードを追加するときはいつでも、これらを使用して必要な値を置き換え、ファイルに追加します。
x4.Add(newDateXML.ToString().Replace("YYYYMMDD", dictionary[x3.Element("value").Value]));
ここで、x4 は XElement で、x3 はルックアップ値を含む XElement です。
問題は、これらを文字列として追加すると、「>」が < ; に変わっていると信じていることです。および '>' を > に変換します。
これを修正するために、次のように置き換えてみました。
foreach (XElement x in currentXML.Descendants("NameAddressRecord"))
{
newXML.WriteRaw(x.ToString().Replace("<", "<").Replace(">", ">"));
}
しかし、他のデータが実際にそれらのシンボルを使用しており、それらを変換すると XML の整合性が損なわれるという問題に遭遇しました。XML フォーマットを失うことなく、また使用するたびにこのノードを再作成することなく、この値を簡単に置き換える方法はありますか?