【问题标题】:LoadXml hanging C#LoadXml 挂 C#
【发布时间】:2017-02-01 17:44:47
【问题描述】:

我正在尝试使用 JSON.NET 将 XML 转换为 JSON。我现在的问题似乎是代码在 LoadXml 期间挂起。

                XmlDocument xDoc = new XmlDocument();
                Console.WriteLine("1");
                xDoc.LoadXml("discordBotFiles/xmldata.xml");

                Console.WriteLine("2");
                String jsonConversion = JsonConvert.SerializeXmlNode(xDoc);

                Console.WriteLine("3");
                JObject textToJson = JObject.Parse(jsonConversion);

无论 XML 是什么,无论 XML 中的内容如何,​​它总是在 LoadXml 调用时挂起。打印到控制台是为了确定它挂在哪里。

编辑:我已将 LoadXml 更改为 Load,但它仍然没有抛出异常并且仍然​​挂起。

Edit2:唉,我发现了异常。我没有出现在控制台中,但它出现在 Visual Basic 的输出中。我没想到那里看。 抛出异常:System.Xml.dll 中的“System.IO.FileNotFoundException”

【问题讨论】:

  • 你确定它挂了,而不是它抛出异常?您使用错误的方法来加载您的 xml file,因为 LoadXml 的参数是实际的 XML,而不是文件名,因此我假设代码实际上是在抛出异常。你是在线程中运行它吗?
  • xml 文件有多大?在大文件上使用 XmlDocument 很慢,您应该使用 XmlReader 来读取较小的文件。
  • 我已将其更改为加载,但它仍然挂起,叹息。而且文件非常小。可悲的是,我害怕在这里发帖,因为我正在制作一个 nsfw 应用程序。我不确定它是否在线程中运行,一个月只编写 C# 代码做小程序。这是我的第一个大的。不过它是在异步下运行的。
  • 你验证过是否抛出异常吗?
  • 你怎么知道它不会抛出异常?

标签: c# .net xml


【解决方案1】:

XmlDocument.LoadXml 将 xml 内容作为参数,而不是文件名。如果要读取文件,请使用XmlDocument.Load

而且我很确定它不会挂起 - 它会抛出 XmlException,因为正在解析的数据 (discordBotFiles/xmldata.xml) 不是有效的 Xml。如果您的应用程序挂起,那是在您的异常处理中,而不是 XmlDocument

【讨论】:

    猜你喜欢
    • 2011-08-03
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多