У меня есть следующий xml:
<div>foo 123 <span id=123>bar</span> baz</div>
И я хотел бы обернуть 123 элементом a
:
<div>foo <a>123</a> <span id=123>bar</span> baz</div>
Что я пробовал?
1) Я не могу выполнить замену InnerXml элемента div, например:
var xmlDocument = new XmlDocument();
xmlDocument.LoadXml("<div>foo 123 <span id='123'>bar</span> baz</div>");
var xmlElement = xmlDocument.DocumentElement;
xmlElement.InnerXml = xmlElement.InnerXml.Replace("123", "<a>123</a>");
Это приведет к неверному xml:
System.Xml.XmlException:'<', шестнадцатеричное значение 0x3C, является недопустимым символом атрибута.Строка 1, позиция 26. </p>
2) Также это не позволяет мне заменить InnerXml 1-го узла внутри элемента div, например:
var childNode = xmlDocument.ChildNodes[0].ChildNodes[0];
childNode.InnerXml = childNode.InnerXml.Replace("123", "<a>123</a>");
Потому что:
System.InvalidOperationException: Невозможно установить 'InnerXml' для текущего узла, поскольку он доступен только для чтения или не может иметь дочерних элементов.
3) Возможно, я мог бы изменить 1-й текстовый узел наизбавиться от "123", вставить новый элемент с 123 после текстового узла.и вставьте новый текстовый узел после элемента с 123 (с оставшимся пробелом).Однако это не позволяет мне создавать новый экземпляр XmlText.