我正在尝试使用vb.net制作.svg文件,我需要添加公司徽标。
我使用以下代码添加图像元素:
'Add logo
.WriteStartElement("image")
.WriteAttributeString("width", "100")
.WriteAttributeString("height", "100")
.WriteAttributeString("xlink", "href", "data:img/png;base64, string of company logo")
.WriteAttributeString("x", "200")
.WriteAttributeString("y", "200")
但我最终在我的XML文件中找到了这个:
<image width="100" height="100" p4:xlink="data:img/png;base64, string of company logo" />
但我想最终:
<image width="100" height="100" xlink:href="data:img/png;base64, string of company logo" />
我做错了什么?为了在我的.svg文件中获取所需的结果,我需要在代码中进行哪些更改?
答案 0 :(得分:1)
1.首先,您需要导入名称空间(将namespace
更改为您需要的名称)
Imports <xmlns:xlink="mynamespace">
2.VB.NET具有独特的功能 - XML Literals。您可以轻松地将值嵌入元素和属性中:
Dim height = 100
Dim width = 100
Dim href = "data:img/png;base64, string of company logo"
Dim xml = <image width=<%= width %> height=<%= height %> xlink:href=<%= href %>/>
3.当您需要XML的字符串表示时,请调用ToString():
Dim xmlString = xml.ToString()
答案 1 :(得分:0)
我通过更改此行修复了我的问题:
.WriteAttributeString("xlink", "href", "data:img/png;base64, string of company logo")
到这个
.WriteAttributeString("xlink", "href", Nothing, "data:img/png;base64, string of company logo")
不确定为什么这会起作用而我之前的解决方案没有......
答案 2 :(得分:0)
我打算在@ JohnyL的答案中建议XML Literals,但可能更容易对其进行硬编码:
Dim xml = "<image width=""100"" height=""100"" xlink:href=""data:img/png;base64," &
stringOfCompanyLogo & """ />"
File.WriteAllText(filePath, xml)
请注意,SVG 2中不推荐使用xlink:
命名空间
https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href