我在工作中广泛使用 .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。作为额外的奖励,我想覆盖默认命名空间,在编写节点时更改它。