簡體   English   中英

LINQ to XML-加載節點,然后添加到Xdocument-命名空間問題

[英]LINQ to XML - Load node then add to Xdocument - Namespace issue

我在加載后繼承繼承父級名稱空間的XElement時遇到了嚴重麻煩...我嘗試了多個示例,在兩個文檔中設置了完全相同的名稱空間,嘗試刪除了名稱空間...老實說,這是一團糟,唯一的示例我發現正在用構造函數中的命名空間重新創建XElement對象,但是我的XML很大。 我不希望這樣做。 有沒有一種方法可以在加載后繼承名稱空間,然后添加到父級(請參見示例代碼,了解我的意思)。

xml = XDocument.Load(rdlFile);
var selectNode = xml.AssumeISelectedTheNodeIWantWithLinq();
//A static element loaded from a separate file
XElement elementNeedsNameSpace = XElement.Load("element.xml");
selectNode.Add(elementNeedsNameSpace );

//Output xml:
<MyAddedNode xmlns="">
  <AssumeLotsOfChilds>
    <SubChilds/>
  </AssumeLotsOfChilds>
</MyAddedNode>

//Root xml
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">

如果我刪除該屬性,那么我將所有孩子弄亂了,並收到了愚蠢的xlmns =“” :(

您的“從單獨文件加載的元素”和子代沒有命名空間,因此,當將xmlns=""插入具有不同默認命名空間的文檔中時,會添加xmlns=""

如果要擺脫該屬性,則需要更改所有元素名稱以使用將其插入文檔的默認名稱空間:

XNamespace ns = "http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition"

foreach (var element in elementNeedsNamespace.DescendantsAndSelf())
{
     element.Name = ns + element.Name.LocalName;
}

selectNode.Add(elementNeedsNameSpace);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM