あなたが言っているのは、上記の結果に重複した宣言が含まれているように、文字列で解析する「AFTER」です。
応答をどのように保存しているのかわかりませんが、同様の結果を生成するサンプル アプリケーションを次に示します。
XDocument doc = XDocument.Parse("<?xml-stylesheet type=\"text/xsl\" href=\"dco.xsl\"?><S><B></B></S>");
doc.Save(Console.OpenStandardOutput());
結果を生成します。
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="dco.xsl"?>
<S>
<B></B>
</S>
あなたが抱えている問題はどれですか。保存する前に、xml 宣言を削除する必要があります。これは、xml 出力を保存するときに xml ライターを使用して行うことができます。以下は、宣言なしで新しいドキュメントを作成するための拡張メソッドを備えたサンプル アプリケーションです。
class Program
{
static void Main(string[] args)
{
XDocument doc = XDocument.Parse("<?xml-stylesheet type=\"text/xsl\" href=\"dco.xsl\"?><S><B></B></S>");
doc.SaveWithoutDeclaration(Console.OpenStandardOutput());
Console.ReadKey();
}
}
internal static class Extensions
{
public static void SaveWithoutDeclaration(this XDocument doc, string FileName)
{
using(var fs = new StreamWriter(FileName))
{
fs.Write(doc.ToString());
}
}
public static void SaveWithoutDeclaration(this XDocument doc, Stream Stream)
{
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(doc.ToString());
Stream.Write(bytes, 0, bytes.Length);
}
}