- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在创建一个 javascript 界面,以动态地将 xlinked 图像添加到教室的 map 。
//declare the xlink namespace in the svg header
xmlns:xlink="http://www.w3.org/1999/xlink"
...
//the code to append the image
var temp = document.createElementNS(svgns,"image");
temp.setAttributeNS(null,"x","0");
temp.setAttributeNS(null,"y","0");
temp.setAttributeNS(null,"height","80");
temp.setAttributeNS(null,"width","40");
temp.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href","roomlayouts/items/ cactus.svg");
图像附加并显示在屏幕上,标签如下:
<image x="0" y="0" height="80" width="40" xlink:href="roomlayouts/items/cactus.svg"></image>
但是一旦我通过 xmlserializer 传递它以便我可以保存文件,它就会从前面去除 xlink 标签:
var svgDoc = document.getElementById('SVGMap');
var serializer = new XMLSerializer();
var xmlString = serializer.serializeToString(svgDoc.firstChild);
创建:
<image x="0" y="0" width="40" height="80" href="roomlayouts/items/cactus.svg"></image>
这意味着 svg 丢失了仙人掌。有什么想法可以让 xmlserializer 保留 xlink 前缀吗?
==============================注意:这是 webkit 中的一个错误,现在已经解决了。请参阅下面的讨论以获取错误报告的链接
最佳答案
我创建了一个 test SVG file on my server那:
<image>
具有正确命名空间的 href
其中的属性。<image>
使用 setAttributeNS(xlinkNS,'xlink:href',…)
<image>
使用 setAttributeNS(xlinkNS,'href',…)
<image>
元素。Safari 和 Chrome 开发者工具都将 DOM 显示为:
<image xlink:href="…" />
<image xlink:href="…" />
<image href="…" />
<image xlink:href="…" />
但是,记录到控制台的 XML 序列化(如果您右键单击该元素并说“复制为 HTML”,您也会得到)显示如下:
<image xlink:href="…" />
<image xlink:href="…" />
<image href="…" xmlns="http://www.w3.org/1999/xlink" />
<image xlink:href="…" />
Firebug 还为生成的 DOM 显示了这一点:
<image xlink:href="…" />
<image xlink:href="…" />
<image href="…" />
<image xlink:href="…" />
但是,Firebug 控制台显示了一个合理的(预期的)序列化:
<image xlink:href="…" />
<image xlink:href="…" />
<image xlink:href="…" />
<image xlink:href="…" />
进一步调查表明,即使您使用如下代码:
img.setAttributeNS(xlinkNS,'GLARBLE:href',…);
Firebug 将显示“GLARBLE:href”作为属性名称,但 XML 序列化使用命名空间的 URI,在根目录中找到匹配的命名空间 <svg>
元素并正确生成:
<image xlink:href="…" />
使用 setAttributeNS
时,Webkit 执行的 XML 序列化似乎有缺陷(损坏)创建一个没有为属性名称提供命名空间前缀的命名空间属性。
但是,如果您为属性名称提供的 namespace 前缀与文档中已声明的 namespace 前缀相匹配,则序列化似乎可以正常工作。
关于javascript - xmlserializer 从 xlink :html svg image tag 剥离 xlink,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8979267/
在我的 Visual Studio 2010 项目中,我使用以下 Post-Build 事件命令行使用 sgen 创建 XmlSerializers.dll。 构建后事件: "$(ProgramFil
我用 XMLSerializer 类做了一些事情。像大多数初学者一样,我在应用程序启动时遇到性能问题。我阅读了很多博客、文章,最后使用了 SGEN 工具。现在性能看起来还不错,但我还有一些不清楚的地方
过去 2 天我一直被这个问题困扰,但仍然没有解决,我正在寻求帮助。 我的 Listbox根据在 Combobox 中选择的项目,获取添加到其中的生成项目.当我点击按钮时 Create出现一个带有 We
我正在尝试解决如何生成一些 Xml,它使用 XmlSerializer 的一组类中的前缀不仅仅是微不足道的使用。我还希望能够读取相同的 Xml(这相当简单,但随着我使用更复杂的属性似乎消失了。 具体用
XmlSerializer 很难(= 不)反序列化包含表情符号字符的内容,例如 ��。我读过这样的字符在 XML 标准中实际上是非法的;但是,如果我想忠实地表示包含表情符号的聊天对话,则需要它们。如何
我将 XmlSerializer 用于 WCF 服务(就我的服务而言,这是有原因的)。但是最近我遇到了这个问题:我找不到一种简单的方法来使引用类型属性成为必需的,即使其在 XSD 中的定义如下所示:
假设您有两个类,一个继承另一个类,并且子类需要使用 XmlSerializer 进行序列化/反序列化。但是,父级包含一个不可序列化的成员,例如字典。 public class Parent {
我正在尝试使用 XmlSerializer 解析具有如下所示元素的 XML。 amount 元素下有相当多的货币类型,我想将它们反序列化为一个对象集合,这些对象具有保存货币类型的字符串属性和保存金额的
我正在用 Javascript 生成 KML 文档,并尝试使用 XMLSerializer生成 XML 文件,但它生成所有小写标签,即使我在 DOM 中以大写形式创建标签。 是 DOM 破坏了大小写还
我有一小段代码可以将 XML 解析为 JSON。它工作得很好,直到我引入 XMLSerializer 来获取 JSON。 public static String convertXMLFileToSt
假设您有两个类,一个继承另一个,子类需要使用 XmlSerializer 进行序列化/反序列化。但是,父级包含一个不可序列化的成员,比如字典。 public class Parent { pu
我正在尝试使用 XmlSerializer 解析具有如下所示元素的 XML。 amount 元素下有相当多的货币类型,我想将它们反序列化为一个对象集合,这些对象具有保存货币类型的字符串属性和保存金额的
我正在尝试将继承属性的所有成员序列化 (XmlSerializer) 作为特性。 两个类: public class Tree { public Point Location { get; s
我在使用 XmlSerializer 时遇到了修剪字符串的问题, 当使用 XmlReader 时。 IgnoreWhitespace 选项显示无效,元素字符串仍包含\n 和空格。 有什么方法可以“即时
我有以下扩展方法来序列化我的类.... public static string SerializeToXml(this object obj) {
我正在尝试反序列化以下 XML(摘录): Waking The Demon Bullet For My Valentine false B
我在使用 .NET 中的 XmlSerializer 时遇到了一些问题。 这里我有一个我刚刚建立的小例子。 (也可用 @ gist https://gist.github.com/2d84be9041
我从 DTD(通过 XSD 和 xsd.exe)为我的 C# 项目创建了类,因此我可以轻松地将它们反序列化为代码中的模型类。 我大致是这样的: XmlReaderSettings readerSett
我使用 XSD.EXE 将 XSD 转换为对象。这很好用,我可以很好地使用 XMLSerializer 反序列化,除了作为数组生成的子元素不会填充。 private SubElements[]
对不起我的英语。我有 XmlSerializer 的奇怪之处。这是我的代码 [Serializable] public class Radio { public bool hasSubWoof
我是一名优秀的程序员,十分优秀!