1

私は間違いなく何かが欠けています。以下のように、HTML スニペットを格納する XML ファイルがあります。

<?xml version="1.0" encoding="utf-8"?>
<presentation>
  <slide id="1" title="Test Slide 1">
    <h1>This is test slide 1.</h1>
    <p>Information on test slide.</p>
  </slide>
  <slide id="2" title="Test Slide 2">
    <h2> This is test slide 2.</h2>
    <p>Information on test slide.</p>
  </slide>
  <slide id="3" title="Test Slide 3">
    <h3> This is test slide 3.</h3>
    <p>Information on test slide.</p>
  </slide>
</presentation>

「スライド」の内容を編集して変更を保存できる ASP.net フォームを作成しています。そのためには、まず で適切なスライドを見つけますid。次に、スライドのすべての内容を で削除しRemoveNodes()、新しい内容を で書き込もうとしWriteRaw(contents)ます。

    XDocument xmlDoc = XDocument.Load(filepath);
    XElement slide = xmlDoc.Descendants("slide").First(el => el.Attribute("id").Value.Equals(id));
    slide.RemoveNodes();
    using (var writer = slide.CreateWriter())
    {
        // contents are retrieved from a TextBox
        writer.WriteRaw(contents);
    }
    xmlDoc.Save(filepath);

コードはエラーなしで実行されます。しかし、xmlファイルを確認すると、htmlタグの<と文字が と に変換されています。>&lt;&gt;

...
  <slide id="1" title="Test Slide 1">&lt;h1&gt;This is test slide 1.&lt;/h1&gt;
&lt;p&gt;Information on test slide.&lt;/p&gt;&gt;</slide>
...

別のオブジェクトが背景の文字をエスケープしていると推測しています。SaveOptions.DisableFormatting動作を変更しません。誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

1

申し訳ありませんが、XmlWriter.WriteRaw は XmlWriters がストリームまたはファイルに書き込むときに機能しますが、System.Xml または System.Xml.Linq にオブジェクトを設定するときは機能しません。slide.Add(XElement.Parse("<dummy>" + contents + "</dummy>").Nodes())代わりに使用してください。

于 2012-06-27T17:37:05.793 に答える