1
我有CustoInfo XML,這是從另一個更大的表中存儲在臨時表中的一些操作。我想剝離根節點並返回其下的所有元素,而不將名稱空間添加到任何根的子節點。從XML中刪除根節點
`DECLARE @tempCustomerInfo TABLE
(
ID INT IDENTITY(1,1),
CustInfo XML NULL
)
DECLARE @CustInfo XML
SET @CustInfo = '<Customer xmlns="Corp.Info.Customer"><Name><FName>Mark</FName> <MName>A</MName><LName>Antony</LName></Name><Address><Street>Clare</Street><City>Clarkson</City></Address></Customer>'
INSERT INTO @tempCustomerInfo SELECT @CustInfo
;WITH XMLNAMESPACES(DEFAULT 'Corp.Info.Customer')
SELECT CustInfo.query('/Customer/*') FROM @tempCustomerInfo`
它返回如下輸出 - 在每個元素中添加名稱空間。
`<p1:Name xmlns:p1="Corp.Info.Customer">
<p1:FName>Mark</p1:FName>
<p1:MName>A</p1:MName>
<p1:LName>Antony</p1:LName>
</p1:Name>
<p2:Address xmlns:p2="Corp.Info.Customer">
<p2:Street>Clare</p2:Street>
<p2:City>Clarkson</p2:City>
</p2:Address>`
我需要這樣的
`<Name >
<FName>Mark</FName>
<MName>A</MName>
<LName>Antony</LName>
</Name>
<Address >
<Street>Clare</Street>
<City>Clarkson</City>
`
清潔XML反正來實現這一目標。提前致謝。
作爲一個側面說明 - 如果你發現自己需要從XML剝離命名空間信息,它通常是出亂子的地方的跡象 - 命名空間信息提供了元素的身份的重要組成部分。 – 2014-10-02 08:20:18
這是我真正想要實現的。我會有多個記錄,並且必須將它們全部(名稱和地址)放在一個根目錄下(CustomerDetails)。一旦我掌握了這些細節,我就會使用FOR XML AUTO,ELEMENTS將它們放在具有不同命名空間的單個文檔中。 – 2014-10-02 10:00:18