在 LabVIEW 中更改 XML 编码

Change XML encoding in LabVIEW

我正在尝试在 labVIEW 中编辑一个 xml 文件,以便稍后在程序中供 .NET 程序集使用,但是,当 labview 保存文件时,它会更改编码。这会阻止 .NET 程序集打开文件,因为它需要采用 UTF-16 或 UCS-2。

有没有办法改变labview中的编码?我可以在 notepad++ 中手动完成,但显然当我实际尝试使用该程序时它不会工作。我试过使用 labview "write to xml file.vi",它允许您指定编码,但它只会删除大部分文件。 如果我在这里有点含糊,我很抱歉。

我已经将一个 link 添加到一个包含 3 个 xml 文件的驱动器文件夹中,它们应该几乎相同(至少它们在 notepad++ 中查看时是这样,而不是在驱动器中) ,但是名为 "working" 的可以加载到我的 .NET 程序集中,而名为 "postLabviewEdit" 的则不能。请注意,两者具有相同的编码声明 (UTF-16)。如果我选择不工作的那个 (postLabviewEdit) 并在记事本++中打开它并单击编码>在 UCS-2 Little Endian 中编码并保存它它再次开始工作(我也包括了这个)。

XML files before and after running through the program

提供的代码存在以下问题:您在保存文件时更改了 XML 文件的元素 - 竞争条件。像这样编辑它:

你所有的文件都是UTF-16;但是 Working.xml 有 BOM 而 postLabviewEdit.xml 没有(初始字节对 (377 376=UTF16-LE))。

$ od -c postLabviewEditEncodedInNotepad.xml | head -1
0000000 377 376   <  [=10=]   ?  [=10=]   x  [=10=]   m  [=10=]   l  [=10=]      [=10=]   v  [=10=]
$ od -c postLabviewEdit.xml| head -1
0000000   <  [=10=]   ?  [=10=]   x  [=10=]   m  [=10=]   l  [=10=]      [=10=]   v  [=10=]   e  [=10=]
$ od -c Working.xml| head -1
0000000 377 376   <  [=10=]   ?  [=10=]   x  [=10=]   m  [=10=]   l  [=10=]      [=10=]   v  [=10=]
localhost:Download$

显然 .NET 需要 BOM?

好的,正如 JJoao 所指出的,问题似乎出在 LabVIEW 正在删除 BOM。 I created this VI to rewrite the file with the the BOM added to the beginning。一旦我 运行 通过这个文件,看起来 .NET 程序集将接受它。谢谢您的帮助!