Neo*_*isk 2 c# xml vb.net xelement linq-to-xml
给定以下内容XDocument,初始化为变量xDoc:
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition">
<ReportSection>
<Width />
<Page>
</ReportSections>
</Report>
Run Code Online (Sandbox Code Playgroud)
我有一个嵌入在XML文件中的模板(让我们称之为body.xml):
<Body xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition">
<ReportItems />
<Height />
<Style />
</Body>
Run Code Online (Sandbox Code Playgroud)
我小时候想把它放进去<ReportSection>.问题是如果添加它XElement.Parse(body.xml),它会保留命名空间,即使我认为应该删除命名空间(没有重复自身的点 - 已在父节点上声明).如果我没有指定命名空间,它会改为放置一个空名称空间,因此它就变成了<Body xmlns="">.
有没有一种方法可以正确合并XElement成XDocument?我想在以下后得到以下输出xDoc.Root.Element("ReportSection").AddFirst(XElement):
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition">
<ReportSection>
<Body>
<ReportItems />
<Height />
<Style />
</Body>
<Width />
<Page>
</ReportSections>
</Report>
Run Code Online (Sandbox Code Playgroud)
我不确定为什么会发生这种情况,但从xmlnsbody元素中删除属性似乎有效:
var report = XDocument.Parse(
@"<Report xmlns=""http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition"">
<ReportSection>
<Width />
<Page />
</ReportSection>
</Report>");
var body = XElement.Parse(
@"<Body xmlns=""http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition"">
<ReportItems />
<Height />
<Style />
</Body>");
XNamespace ns = report.Root.Name.Namespace;
if (body.GetDefaultNamespace() == ns)
{
body.Attribute("xmlns").Remove();
}
var node = report.Root.Element(ns + "ReportSection");
node.AddFirst(body);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1570 次 |
| 最近记录: |