XML をシリアライズしてファイルを作成しようとしています。xsd.exe を使用して XSD から自動生成されたオブジェクトからシリアル化しています。ファイルは処理され、問題なく作成されます。しかし、検証ツールに対して実行するたびに、Content Not Allowed In Prologというエラーが表示されます
私の推測では、xml 宣言の前に不正な形式の文字がいくつかあると思いますが、それらのように見えたり、そこにバイトが表示されたりすることはありません。XML ドキュメントをシリアル化して作成するコードは次のとおりです。
XmlSerializer ser = new XmlSerializer(typeof(ContinuityOfCareRecord));
XmlWriterSettings settings = new XmlWriterSettings()
{
Encoding = Encoding.UTF8,
ConformanceLevel = ConformanceLevel.Document,
OmitXmlDeclaration = false,
Indent = true,
NewLineChars = "\n",
CloseOutput = true,
NewLineHandling = NewLineHandling.Replace,
CheckCharacters = true
};
using (XmlWriter myWriter = XmlWriter.Create(ms, settings))
{
myWriter.Flush();
//myWriter.WriteProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"ccr.xsl\"");
ser.Serialize(myWriter, myCCR);
}
非常に単純に思えますが、出力 XML ファイルの先頭に不正な文字が含まれている場合、その文字を削除するにはどうすればよいでしょうか?
XML ドキュメントは次のように始まります。
<?xml version="1.0" encoding="utf-8"?>
<ContinuityOfCareRecord xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:astm-org:CCR">
<CCRDocumentObjectID>testccr</CCRDocumentObjectID>
<Language>
正しいように見えますが、バリデーターはそれが好きではありません。私はこれについて一日中机の上で頭を悩ませてきたので、サンプルコードは非常に役に立ちます!
ありがとう