2015-03-02 3 views
1

Я пытаюсь редактировать XML-файл в labVIEW для использования .NET-сборкой позже в программе, однако, когда labview сохраняет файл, он меняет кодировку. Это препятствует тому, чтобы сборка .NET могла открывать файл, поскольку она должна быть в UTF-16 или UCS-2.Изменение кодировки XML в LabVIEW

Есть ли способ изменить кодировку в лабораторном режиме? Я могу сделать это вручную в блокноте ++, но, очевидно, это не сработает, когда я на самом деле пытаюсь использовать программу. Я пробовал использовать labview «write to xml file.vi», который позволяет вам указать кодировку, но она просто удаляет большую часть файла. Прошу прощения, если я немного расплывчата.

Я включил ссылку на папку с тремя файлами xml, которые должны быть почти одинаковыми (по крайней мере, они отображаются в блокноте ++, а не на диске), однако тот, который называется «рабочий», может быть загруженным в мою сборку .NET, и тот, который называется postLabviewEdit, не может. Обратите внимание, что оба имеют одно и то же объявление кодировки (UTF-16). Если я возьму тот, который не работает (postLabviewEdit), и откройте его в блокноте ++ и щелкните кодировку> Кодировать в UCS-2 Little Endian и сохраните его, он снова заработает (я тоже включил этот).

enter image description here

XML files before and after running through the program

+0

Если вы хотите, чтобы фотографии включали в себя ссылки на них. Затем кто-то отредактирует вопрос, чтобы задать вопрос непосредственно. – Makyen

+0

Существует несколько способов редактирования XML в LabVIEW. Используете ли вы узлы свойств/вызываете узлы стандартной библиотеки Document object? Или EasyXML? Или LabXML? Или что-то другое? – mzu

+0

Способ изменения кодировки XML зависит от библиотеки, которую вы используете для обработки XML-файла – mzu

ответ

1

Все ваши файлы UTF-16; но Working.xml имеют спецификацию и postLabviewEdit.xml не имеет (официальная пара байтов (377 376 = UTF16-LE)).

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

Видимо, для .NET требуется спецификация?

+0

как я могу получить файл для спецификации в labview? – LabviewMustDie

+1

Вы правы, это определенно проблема, я пытался выяснить, как это сделать в лабораторных условиях, но я не могу заставить ее работать. Это самая полезная информация, которую я могу найти http://forums.ni.com/t5/LabVIEW/Generate-and-Write-unicode-characters-to-file/td-p/3045009 – LabviewMustDie

2

Код предоставленный следующая задача: изменить элемент файла XML при сохранении его - состояние гонки. Редактировать это можно так: enter image description here

+0

Спасибо, это делает мой код лучше, но, к сожалению, у меня все еще есть проблема с кодировкой. Я редактировал сообщение, чтобы включить xml-файлы. – LabviewMustDie

+0

Похоже, что одна из проблем заключается в том, что спецификация отсутствует, (см. Мой ответ или, по сути, мой комментарий). Есть ли простой способ добавить 0xFFFE в начало вывода? – JJoao

+0

Что вы имеете в виду? добавить 0xFFFE в начало файла? – LabviewMustDie

3

ОК. Похоже, проблема заключалась в том, что LabVIEW удалял спецификацию, как указано JJoao. I created this VI to rewrite the file with the the BOM added to the beginning. Как только я запускаю файл через это, похоже, что сборка .NET примет его. Спасибо за помощь!

+0

Я рад, что вы нашли решение! – JJoao

Смежные вопросы