使用默认命名空间将新Xelement添加到现有文档

时间:2013-04-12 18:29:24

标签: vb.net linq-to-xml xml-namespaces xml-literals

我觉得这应该比它更容易,但我似乎无法直截了当。这是我的测试用例。

    Imports <xmlns="http://www.w3.org/2000/svg">

    Public Sub Test()

        Dim doc As XDocument = XDocument.Load("input.svg")
        Dim svg As XElement = doc.Elements.First

        svg.Add(<text>
                    <tspan>Some Text</tspan>
                </text>)

        svg.Save("output.svg")

    End Sub

输入xml

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg">
    <g  id="layer4" >
    </g>
</svg>

我得到的是以下输出,

<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg">
  <g id="layer4"></g>
  <text xmlns="http://www.w3.org/2000/svg">
    <tspan>Some Text</tspan>
  </text>
</svg>

为什么新的文本元素没有看到它使用默认命名空间并且不使用xmlns?如果我不使用Imports <xmlns="http://www.w3.org/2000/svg">语句,我会在文本元素上获得一个空名称空间xmlns=""

1 个答案:

答案 0 :(得分:1)

在.NET的最新版本(4.5,也许是4.0)中,您可以使用

进行保存
doc.Save("output.svg", SaveOptions.OmitDuplicatNamespaces)

请参阅http://msdn.microsoft.com/en-us/library/bb551426.aspx

相关问题