【发布时间】: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 <xmlns="http://www.w3.org/2000/svg"> 语句,我会在文本元素上得到一个空的命名空间 xmlns=""。
【问题讨论】:
-
见this question。解决方法是添加节点后手动去掉xmlns属性。
标签: vb.net linq-to-xml xml-namespaces xml-literals