【问题标题】:Work Around, Error: XML document structures must start and end within the same entity解决方法,错误:XML 文档结构必须在同一实体内开始和结束
【发布时间】:2017-12-17 07:55:36
【问题描述】:

首先我要说我是编程和 XML 的新手,我愿意接受社区可以为我提供的任何支持。

背景: 我正在 Matlab 中编写自己的 XML 解析脚本,以支持需要实时数据处理的项目。我在加载和解析“非实时”XML 文件时没有问题。我遇到的问题是实时 XML 文件。产生的错误是:XML 文档结构必须在同一个实体内开始和结束。

说明:我正在使用专有软件来生成这些实时 XML 文件。当我单击数据采集程序上的“生成实时 XML 数据”按钮时。它在我选择的目录中生成两个文件。第一个是 xml_smf(它是零字节,我无法打开)。第二个,是一个 xml 文件,它随着时间的推移而增长(因为实时数据被获取并放入 xml 文件中)。

这个实时 XML 文件的问题是它们不包含结束标记,因此会引发“XML 文档结构必须在同一实体内开始和结束”错误。当我单击数据采集程序上的“停止生成实时 XML 数据”按钮时。 xml_smf 文件消失,xml 文件最终更新为结束标记。问题是我需要程序实时读取数据,而现场用户无需不断单击数据采集程序上的停止/启动按钮。

我的问题如下:

  1. 有人有使用 XML_SMF 文件的经验吗?关于它们的用途有什么建议吗?

  2. 我可以在 Matlab 中应用一种解决方法来打开 XML 文件并附加正确的结束标签吗?

  3. 您对可以处理实时数据(在 Matlab 中)的工作流程有什么建议吗?我正在描绘某种循环,其中越来越大的 XML 文件每 30 秒左右重新处理一次。

【问题讨论】:

    标签: xml matlab real-time


    【解决方案1】:

    在文件为 well-formed 之前,它不是 XML。如果它唯一的问题是缺少根元素的结束标记,只需将文件 作为文本 读取并用缺少的结束标记将其写出来。 (希望您也不必担心文件被其他进程保持打开以供写入。)然后 将其作为 XML 读取。如果还有问题,请看How to parse invalid (bad / not well-formed) XML?

    【讨论】:

    • 感谢您的反馈,kjhughes。 Open/Read/Write(append)/Close 肯定是处理讨厌的打开标签的可行解决方法。我想有一些“更简洁”的方式来读取实时数据,但是对于“艰难地学习”来说,有一些话要说。
    • @J.Will:如果保持(坏)XML 文件打开的进程有任何问题,您可以将它复制到一个临时文件,在那里修复它,然后将其作为 XML 读取。每次更新错误的 XML 文件时重复一次。
    • @halfer:谢谢分配,这听起来是个好主意,我会试试的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多