18.10.2012, 08:15 | #1 |
Участник
|
XML Export
Ax 3.0 при выгрузке таблицы в xml, если в данных поля таблицы имеются русские буквы вылазит ошибка, как быть?
Цитата:
Метод 'save' в COM-объекте класса 'microsoft.xmldom' возвратил код ошибки 0x80004005 (E_FAIL), который означает: Не удается сохранить знак в кодировке "iso-8859-1".
|
|
18.10.2012, 09:58 | #2 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Player1 (1). |
18.10.2012, 10:31 | #3 |
Участник
|
вот код
X++: XmlDocument doc = new XMLDocument(); XmlElement nodeXml; XmlElement nodeTable; XmlElement nodeItem; XmlElement nodeExtItem; XmlElement nodeName; XmlElement nodeItemName; XmlElement nodeModelGroup; XmlElement nodeDimGroup; InventTable inventTable; #define.filename("d:\\xml\\test.xml") ; doc = XmlDocument::newBlank(); nodeXml = doc.createElement("xml"); doc.appendChild(nodeXml); while select inventTable { nodeTable = doc.createElement(tablestr(InventTable)); nodeTable.setAttribute( fieldstr(InventTable, RecId), int2str(inventTable.RecId) ); nodeXml.appendChild(nodeTable); // nodeExtItem = doc.createElement( fieldstr(InventTable, ExternalItemId) ); nodeExtItem.appendChild( doc.createTextNode(inventTable.ExternalItemId) ); nodeTable.appendChild(nodeExtItem); // nodeItem = doc.createElement( fieldstr(InventTable, ItemId) ); nodeItem.appendChild( doc.createTextNode(inventTable.ItemId) ); nodeTable.appendChild(nodeItem); } doc.save(#filename); |
|
18.10.2012, 11:31 | #4 |
Участник
|
т.е. ссылки не помогли решить проблему ?!
А если упростить код: X++: select inventTable { nodeTable = doc.createElement(tablestr(InventTable)); nodeTable.setAttribute( fieldstr(InventTable, RecId), int2str(inventTable.RecId) ); nodeXml.appendChild(nodeTable); // nodeExtItem = doc.createElement( fieldstr(InventTable, ExternalItemId) ); //nodeExtItem.appendChild( doc.createTextNode(inventTable.ExternalItemId) ); nodeExtItem.appendChild( doc.createTextNode('00001')); nodeTable.appendChild(nodeExtItem); // nodeItem = doc.createElement( fieldstr(InventTable, ItemId) ); //nodeItem.appendChild( doc.createTextNode(inventTable.ItemId) ); nodeItem.appendChild( doc.createTextNode('00001')); nodeTable.appendChild(nodeItem); } следующим шагом вместо while select, попробовать выгрузить одну карточку select inventTable. |
|
18.10.2012, 11:41 | #5 |
Участник
|
Код я выслал не рабочий, с ошибкой из первого сообщения. Сейчас смотрю ваши ссылки где советуют менять encoding.
Если закоментировать заполнение из поля ItemId (в котором есть русские символы), то всё отработает. В ExternalItemId только цифровые значения или пустоты. |
|
|
|