我目前正在向 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 格式并且每次我想使用它时都不必重新创建这个节点?