1

次のドキュメントタイプを含むXDocumentをWP7.1.1で作成してエクスポートしようとしています。

<!DOCTYPE xbel PUBLIC "+//IDN python.org//DTD XML Bookmark Exchange
    Language 1.0//EN//XML"
    "http://www.python.org/topics/xml/dtds/xbel-1.0.dtd">

残念ながら、これまでのすべての試みでNotSupportedExceptionsで迎えられ、ここから先に進む方法がわかりません。これが私が試したことの少しの抜粋です:

/* create document */
var document = new XDocument();
var doctype = new XDocumentType("xbel", null, null, null); 
document.AddFirst(doctype); // << everything working without this line

/* document header */
var version = new XAttribute("version", "1.0");
var root = new XElement("xbel", version);
document.Add(root);

/* convert to string1 */
var text1 = document.ToString(); // << NotSupportedException was unhandled

/* convert to string2 */
var stringBuilder = new StringBuilder();
var stringWriter = new StringWriter(stringBuilder);
document.Save(stringWriter); // << NotSupportedException was unhandled
var text2 = stringBuilder.ToString();

この問題は、これこの質問に関連している可能性があります。

4

1 に答える 1

2

これが私の特定の問題に対するハッキーな解決策です:

/* format */ 
var stringBuilder = new StringBuilder();
var stringWriter = new StringWriter(stringBuilder); 
document.Save(stringWriter);
var text = stringBuilder.ToString();

/* document type */
const string subset = "<!DOCTYPE xbel PUBLIC \"+//IDN python.org//DTD XML Bookmark Exchange Language 1.0" +
    "//EN//XML\" \"http://www.python.org/topics/xml/dtds/xbel-1.0.dtd\">";
return text.Replace("?>", "?>" + Environment.NewLine + subset); 

フレームワークの欠点やバグにより、このような奇妙なコードを記述しなければならない場合は常に悲しいことですが、Windows Phoneの場合と同じように頻繁に発生する場合は、さらに悪化します。

于 2012-07-05T17:11:55.163 に答える