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

名前空間を指す必要がある 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 に答える
1

WriteStartElement3 つのパラメーターでオーバーロードを使用http://msdn.microsoft.com/en-us/library/7cdfkth5.aspx

  1. prefix : 要素の名前空間プレフィックス。
  2. localName : 要素のローカル名。
  3. ns : 要素に関連付ける名前空間 URI。
于 2013-01-24T15:28:05.960 に答える