Я широко использую технологии .NET XML в своей работе. Одна из вещей, которые мне очень нравятся, это движок XSLT, точнее его расширяемость. Однако есть один маленький кусочек, который продолжает вызывать раздражение. Ничего особенного или чего-то, с чем мы не можем жить, но это мешает нам создавать прекрасный XML, который мы хотели бы создать.
Одна из вещей, которую мы делаем, - это преобразование узлов в линию и импорт узлов из одного XML-документа в другой.
К сожалению, когда вы сохраняете узлы в XmlTextWriter
(фактически независимо от того, что возвращает XmlWriter.Create(Stream)
), определения пространства имен добавляются туда независимо от того, необходимо это (ранее определено) или нет. Вы получаете вид следующего 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. В качестве дополнительного бонуса я хотел бы переопределить пространство имен по умолчанию, меняя его по мере написания узла.