【问题标题】:Adding new Xelement to an existing document using default namespace使用默认命名空间将新的 Xelement 添加到现有文档
【发布时间】:2013-04-12 18:29:24
【问题描述】:

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

    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 &lt;xmlns="http://www.w3.org/2000/svg"&gt; 语句,我会在文本元素上得到一个空的命名空间 xmlns=""

【问题讨论】:

  • this question。解决方法是添加节点后手动去掉xmlns属性。

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


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢,我希望有一个简单的解决方案。它也在 .Net 4.0 中,这正是我所需要的。
猜你喜欢
  • 1970-01-01
  • 2010-10-12
  • 2011-07-18
  • 2014-12-18
  • 1970-01-01
  • 2011-03-15
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
相关资源
最近更新 更多