【问题标题】:Read .xml File into XmlDocument将 .xml 文件读入 XmlDocument
【发布时间】:2014-07-26 23:08:33
【问题描述】:

我有一个动态磁贴模板,例如:

<tile>
  <visual version="2">
    <binding template="TileSquare150x150Text02" fallback="TileSquareText02">
      <text id="1">Text Field 1 (larger text)</text>
      <text id="2">Text Field 2</text>
    </binding>  
  </visual>
</tile>

我可以像这样将其读入XmlDocument

StringBuilder sb = new StringBuilder("<?xml version=\"1.0\" encoding=\"utf-8\" ?><tile>");
            sb.Append("<visual version=\"2\"><binding template=\"TileSquare150x150Text04\" fallback=\"TileSquareText04\"><text id=\"1\">Text Field 1</text></binding></visual></tile>");
            XmlDocument xmldoc = new XmlDocument();
            xmldoc.LoadXml(sb.ToString());

但我真的很想直接从文件中读取它,因为这很快就会变得非常混乱。

XmlDocument.Load 不支持 Windows Phone 8.1,所以我不能只输入文件名。 System.IO.File.ReadAllText(fileName); 对于 Windows Phone 8.1 也是不可接受的。 XDocument 好像没有友好的方法。

如何将 .xml 文件读取到 string,以便将其插入到 Windows Phone 8.1 应用程序的 XmlDocument 中?

【问题讨论】:

    标签: c# xml windows-phone-8.1 live-tile


    【解决方案1】:

    XDocument.Load 可以从文件中加载。根据 MSDN,Windows Phone 8.1 支持它:

    支持:Windows Phone 8.1、Windows Phone 8、Silverlight 8.1

    XDocument.Parse 从包含 XML 的字符串加载。

    关于从 XDocument 到 XmlDocument 的转换,您可以使用@Muhammad's answer。如果您决定实施它,请考虑大型 XML 文件的潜在性能问题(阅读我在其下方的评论)。

    【讨论】:

    • 好吧,我会的!我正在初始化 XDocument,然后尝试加载实例化。谢谢! XDocument xDoc = XDocument.Load("文件名");
    • 不幸的是,我刚刚发现我需要一个 XmlDocument。想知道有没有办法转换...
    • @Evorlor:为什么需要使用 XmlDocument? XDocument 非常人性化,通常代码行数较少。如果代码不多,转换应该很容易。
    • TileNotification 在其构造函数中需要 XmlDocument,而不是 XDocument。但我可以将其转换为字符串,然后从那里制作一个 XmlDocument。成功!丑陋的成功....但是成功!谢谢:)
    • @Evorlor:看看这个:stackoverflow.com/questions/1508572/…
    【解决方案2】:

    这是在 xml 文档中执行此操作的方法。

            XmlDocument xmldoc = new XmlDocument();
            xmldoc.LoadXml(XDocument.Load("Assets/test.xml").ToString());
    

    【讨论】:

    • 虽然这看起来是一个不错的解决方案,但以下线程表明它可能由于字符串转换(来回)而存在性能问题。但是,它应该适用于小型 XML 文件,如果这是您所追求的。有关更多信息,请查看此答案下的评论。 stackoverflow.com/a/9376479/897326
    • Neolisk 是对的。但是任何将其用于实时磁贴的人,无论如何您都不应该在每个会话中多次运行此代码。
    猜你喜欢
    • 2012-02-24
    • 2011-02-21
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 2020-06-30
    • 2013-08-21
    相关资源
    最近更新 更多