Я широко использую технологии .NET XML в своей работе. Одна из вещей, которые мне очень нравятся, это движок XSLT, точнее его расширяемость. Однако есть один маленький кусочек, который продолжает вызывать раздражение. Ничего особенного или чего-то, с чем мы не можем жить, но это мешает нам создавать прекрасный XML, который мы хотели бы создать.
Одна из вещей, которые мы делаем, - это преобразуем встроенные узлы и импортируем узлы из одного документа XML в другой.
К сожалению, когда вы сохраняете узлы в XmlTextWriter
(фактически независимо от того, что возвращает XmlWriter.Create(Stream)
), определения пространства имен XmlTextWriter
туда независимо от того, необходимо это (ранее определено) или нет. Вы получаете вид следующего XML:
<root xmlns:abx="http://bladibla">
<abx:child id="A">
<grandchild id="B">
<abx:grandgrandchild xmlns:abx="http://bladibla" />
</grandchild>
</abx:child>
</root>
У кого-нибудь есть предложение относительно того, как убедить .NET быть эффективным в отношении его определений пространства имен?
PS. В качестве дополнительного бонуса я хотел бы переопределить пространство имен по умолчанию, меняя его, когда я пишу узел.