在 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 文件的元素 - 竞争条件。像这样编辑它:
你所有的文件都是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 程序集将接受它。谢谢您的帮助!
我正在尝试在 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 文件的元素 - 竞争条件。像这样编辑它:
你所有的文件都是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 程序集将接受它。谢谢您的帮助!