vb.net XML(SVG)xlink:href =

时间:2018-01-02 11:47:39

标签: xml vb.net svg

我正在尝试使用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文件中获取所需的结果,我需要在代码中进行哪些更改?

3 个答案:

答案 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