如何通过C#代码在KML中写引号
Posted
技术标签:
【中文标题】如何通过C#代码在KML中写引号【英文标题】:How to write quotation marks in KML through C# code 【发布时间】:2012-01-26 17:13:26 【问题描述】:这可能是一个愚蠢的问题,但我的 html 技能现在已经褪色了.. :)
我正在通过单击按钮创建一个 KML 文件,并且 KML 标记的所有代码都在那里。我需要的是使用多个标签。它将在 KML 的开头进行硬编码。 KML 应如下所示:
所以这段代码是从后面的 C# 代码生成的。所以问题是如何获得
<Style id= "randomColorIcon">
然后像 /Style 一样正确地关闭标签而没有 id 部分?
在 C# 代码中我有类似的东西,但我发现它不读取其他样式 id 标签
kml.WriteStartElement("Style");
kml.WriteElementString("id", "randomColorIcon"); //not suitable for more than one Style tags
kml.WriteStartElement("IconStyle");
kml.WriteStartElement("Icon");
kml.WriteElementString("href", "http://maps.google.com/mapfiles/kml/pal3/icon23.png");
kml.WriteEndElement(); //</Icon>
kml.WriteEndElement(); //</IconStyle> ??
kml.WriteEndElement(); //</Style>
提前致谢:)
【问题讨论】:
恐怕你的术语不清楚。样式是元素的名称。该元素有一个开始标签<Style id="id">
和一个结束标签</Style>
,并且由这两个标签以及介于两者之间的所有内容组成。单词Style
本身如果不是标签,也不会将文本Style id="id"
视为一个单词。你所说的“id部分”是一个属性,它不是元素名称的一部分。
【参考方案1】:
就 XML 而言:
<Style id= "randomColorIcon"></Style>
还有:
<Style id= "randomColorIcon" />
是等价的。
在这方面,以下内容将产生与您所要求的语义等价的内容:
kml.WriteStartElement("Style");
kml.WriteAttributeString("id", "randomColorIcon");
kml.WriteEndElement();
【讨论】:
我认为不是。我之前尝试过,我刚刚尝试过......它没有读取第一个 Style 标签......而且我确信我的语法没有错误。否则,当我尝试手动编辑 KML 并在 @Pepys - 我不明白你的意思。 “它不读取第一个样式标签” - 正确。XmlWriter
写入 XML,而不是读取它。我不知道什么“工作得很好”,因为你没有描述什么应该工作或不工作。
对不起.. 有时我以正常的方式解释得很糟糕 :) 我所说的“不阅读..”是指当我在 Google 地球中打开 KML 文件时,我没有看到我的图片,但是黄色地标图标。我现在再试一次:我在后面的代码中创建 Style 标签的方式是:kml.WriteStartElement("Style"); kml.WriteElementString("id", "randomColorIcon"); ... kml.WriteEndElement(); // 那么同样的东西用不同的图片。生成的 KML 文件看起来不错,但是当我在 GE 中打开它时,我没有得到第二张图片(即在第二个样式标签中)。你现在能理解我了吗 ? :)
然后当我手动编辑 KML 代码并删除 您需要 WriteAttributeString。
【讨论】:
你能不能再具体点。此方法有 3 个不同的参数。有 2、3 和 4 个字符串。我不确定应该使用哪个以及如何获取 中的引号 @Pepys - 如果您访问 MSDN,每个重载的文档都会解释每个参数的用途。 如果你想知道一个函数的不同变体做什么,只有一件事。测试!如有必要,创建一个新项目,使用三种不同的变体向输出中写入内容,然后查看运行后的结果。 是的 :) 我会尝试这样做。谢谢 知道了 :) kml.WriteStartElement("Style"); kml.WriteAttributeString("id", "randomColorIcon2");这将产生正确的样式元素,如以上是关于如何通过C#代码在KML中写引号的主要内容,如果未能解决你的问题,请参考以下文章