Как добавить строку в качестве узла в новый XmlDocument?
Извиняюсь за очень простой вопрос, но я пытаюсь добавить динамически генерируемую строку в новый XmlDocument.
Сначала я попробовал приведенный ниже код, но не был уверен, что есть лучший способ.
var summaryXml = new XmlDocument();
summaryXml.InnerXml.Replace("", "<Summary rev=\"" + newRevNumber + "\"></Summary>");
newRevNumber - это просто MD5-хеш текущего dateTime.
У меня есть коллекция узлов XML, в которых уже есть данные, и я пытался добавить их в конец этого нового XmlDocument после того, как вставил указанную выше строку в качестве первого дочернего элемента.
Кроме того, я бы просто пошел с XDocument, но я недостаточно знаком с LINQ to XML, чтобы достичь результатов.
2 ответа
Кроме того, я бы просто пошел с XDocument, но я недостаточно знаком с LINQ to XML, чтобы достичь результатов.
LINQ to XML очень прост и очень легок по сравнению с очень многословным API XmlDocument
,
Вы можете получить нужный XML-документ в виде XDocument
как это:
XDocument summaryXml = new XDocument(
new XElement("Summary",
new XAttribute("rev", newRevNumber)
)
);
Это создает тот же документ, что и при следующем использовании XmlDocument:
XmlDocument summaryXml = new XmlDocument();
XmlElement summary = summaryXml.CreateElement("Summary");
XmlAttribute rev = summaryXml.CreateAttribute("rev");
rev.Value = newRevNumber;
summary.Attributes.Append(rev);
summaryXml.AppendChild(summary);
Как вы видете, XDocument
намного приятнее…;)
Если вам нужен XmlDocument
Тем не менее, вы всегда можете конвертировать между двумя форматами по мере необходимости. Этот вопрос охватывает, как это сделать.
Попробуй это
var summaryXml = new XmlDocument();
var summaryElement = summaryXml.CreateElement("Summary");
var revAttribute = summaryXml.CreateAttribute("rev");
revAttribute.Value = newRevNumber;
summaryElement.Attributes.Append(revAttribute);
summaryXml.AppendChild(summaryElement);