【发布时间】:2012-09-11 20:23:44
【问题描述】:
我目前正在向 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 格式,并且每次我想使用它时都不必重新创建这个节点?
【问题讨论】:
标签: c# xml linq-to-xml stringbuilder xmlwriter