【发布时间】:2016-06-10 16:18:19
【问题描述】:
我在加载后添加继承父命名空间的 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="" :(
【问题讨论】:
-
尝试定义 XNamespace 'ns = "..";'并用元素'selectNode.Add(ns + element);'添加它
-
我喜欢使用以下内容:xml.Descendants().Where(x => x.Name.LocalName == "AssumeLotsOfChilds")。不需要命名空间。
标签: c# .net xml linq xml-namespaces