如何通过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> 

提前致谢:)

【问题讨论】:

恐怕你的术语不清楚。样式是元素的名称。该元素有一个开始标签&lt;Style id="id"&gt; 和一个结束标签&lt;/Style&gt;,并且由这两个标签以及介于两者之间的所有内容组成。单词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 代码并删除 ... 并将其移动到 @Pepys - 您是否比较了一张有效图片和一张无效图片之间的标记?手动编辑文件有什么不同?【参考方案2】:

您需要 WriteAttributeString。

【讨论】:

你能不能再具体点。此方法有 3 个不同的参数。有 2、3 和 4 个字符串。我不确定应该使用哪个以及如何获取 中的引号 @Pepys - 如果您访问 MSDN,每个重载的文档都会解释每个参数的用途。 如果你想知道一个函数的不同变体做什么,只有一件事。测试!如有必要,创建一个新项目,使用三种不同的变体向输出中写入内容,然后查看运行后的结果。 是的 :) 我会尝试这样做。谢谢 知道了 :) kml.WriteStartElement("Style"); kml.WriteAttributeString("id", "randomColorIcon2");这将产生正确的样式元素,如

以上是关于如何通过C#代码在KML中写引号的主要内容,如果未能解决你的问题,请参考以下文章

如何在引号中包含引号c#

如何在C#中写Excel文件

c#中将单引号字符串转换为uint [重复]

C#中CreateObject的等效代码

在正则表达式中使用引号,在 C# 中使用引号

在 C# 中,类或函数之前的方括号中写的是啥? [复制]