Как добавить строку в качестве узла в новый 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);
Другие вопросы по тегам