2

抱歉,如果这很明显,但我正在尝试为这样的站点地图编写一些 xml:

<url>
    <loc>http://...</loc>
    <priority>0.5</priority>
    <image:image>
      <image:loc>http://...</image:loc>
     </image:image>
</url>

使用以下代码:

    const string locationPrefix = "loc";
    const string imagePrefix = "image";
    writer.WriteStartElement("image", imagePrefix);
    writer.WriteStartElement("image", locationPrefix);
    writer.WriteValue(imageUrl);
    writer.WriteEndElement(); // </image:loc>
    writer.WriteEndElement(); // </image:image>

但我得到了这个。

<image xmlns="image">
   <image xmlns="loc">http://...</image>
 </image>

有人可以告诉我这里哪里出错了吗?

编辑:这做到了

writer.WriteStartElement("image", imagePrefix, null);
4

2 回答 2

1

WriteStartElement使用3 个参数的重载http://msdn.microsoft.com/en-us/library/7cdfkth5.aspx

  1. prefix:元素的命名空间前缀。
  2. localName:元素的本地名称。
  3. ns:与元素关联的命名空间 URI。
于 2013-01-24T15:28:05.960 回答
1

您想为应该指向命名空间的 xml 元素添加前缀。试试这个

using(var ms = new MemoryStream())
using (var writer = XmlWriter.Create(ms))
{
    const string imagePrefix = "img";
    writer.WriteStartElement(imagePrefix, "image", "http://image.com");
    writer.WriteStartElement(imagePrefix, "local", "http://image.com");
    writer.Flush();
    writer.Close();
    Console.WriteLine(Encoding.UTF8.GetString(ms.ToArray()));
}
于 2013-01-24T15:32:49.397 回答