0

我觉得这应该比现在更容易,但我似乎无法弄清楚。这是我的测试用例。

    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=""

4

1 回答 1

1

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

doc.Save("output.svg", SaveOptions.OmitDuplicatNamespaces)

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

于 2013-04-13T13:42:22.633 回答