<game xmlns="http://my.name.space" ></game>
这是我的根元素。我编写了一个存储过程来将元素插入其中。总结一下存储过程,这里是SQL
UPDATE ChessGame SET GameHistory.modify('insert <move><player>black</player><piece>pawn</piece><start>E7</start><end>E6</end></move> as last into (/game)[0]') WHERE Id = @GameId;
现在,当 MSSQL 插入时,还会插入一个空的命名空间,所以结果是这样的
<move xmlns="">
<player>black</player>
<piece>king</piece>
<start>E7</start>
<end>E6</end>
</move>
现在我尝试使用两者
WITH XMLNAMESPACES(DEFAULT 'http://my.name.space')
和
GameHistory.modify('declare default element namespace "http://my.name.space"; insert ...')
但我最终得到了无处不在的前缀和每个元素的命名空间声明。
在缺少逻辑来处理 MSSQL 放入的前缀的代码库中会出现问题。最后,我只想在我的 xml 根目录中插入一个新元素并将命名空间留空(使用根默认值?)。我对此很陌生,但据我所知,如果我的根元素中有一个命名空间,那么所有子节点不应该都有我的根的默认命名空间吗?