【问题标题】:Converting XDocument containing XDocumentType causes a NotSupportedException转换包含 XDocumentType 的 XDocument 会导致 NotSupportedException
【发布时间】:2012-06-11 14:27:15
【问题描述】:

我正在尝试在 WP7.1.1 上创建和导出包含以下文档类型的 XDocument:

<!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();

此问题可能与thisthis 问题有关。

【问题讨论】:

    标签: windows-phone-7 linq-to-xml xbel


    【解决方案1】:

    这是针对我的特定问题的 hacky 解决方案:

    /* 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 一样频繁时,情况就更糟了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      相关资源
      最近更新 更多