2011-01-18 13 views
1

私は外部サービスからXMLをデシリアライズしようとしているので、受け取った出力XMLを制御できません。デシリアライズ時にXMLスキーマ/ xsdを指定できますか?

サービスのXMLは少し奇妙です。スキーマを指定するものではなく、スキーマ自体を参照します。たとえば、次のように

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE response> 
<response> 
// blah blah 
</response> 

私はそれのためのXSDファイルを作成するために、VSのツールで構築を使用することができますが、デシリアライズするとき、それはローカルXSDファイルを指定することは可能でしょうか? DOCTYPEタグに存在しないものを使用する代わりに?

+0

あなたはどんな問題を抱えていますか?何がうまくいかない? –

+0

申し訳ありませんが、ジョン。 「セキュリティ上の理由から、このXMLドキュメントではDTDは禁止されています.DTD処理を有効にするには、XmlReaderSettingsのDtdProcessingプロパティを解析し、その設定をXmlReader.Createメソッドに渡してください。 – Jason

答えて

1

XMLドキュメントを読み込むときにXmlResolverを使用しないように指定する必要があります。 Ignore DOCTYPE .dtd, but .dtd file must still exist

.xsdファイルを簡単に指定できます。ドキュメントを読み込むときに、XmlReaderSettingsオブジェクトを使用します。プログラムがWebサービスの場合は、.xsdがWindowsディレクトリの下に存在する必要があります。 64ビットWindowsの痛みを含むヒントについては、MSI Installer, 64 bit OS, write to \windows\system32\inetsrv folder

+0

ありがとう、aaaa bbbb(偉大な名前)。前にDtdProcessing = DtdProcessing.Ignoreを指定しましたが、リゾルバをnullに設定しませんでした。それで、私の非直列化が機能しています。 – Jason

関連する問題