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 に答える