Цитата:
Изначально опубликовано slava
Вот кусочек рабочего кода
PHP код:
XMLDocument objDOM ;
XMLElement elementNode;
XMLProcessingInstruction procInctruction;
;
objDOM = new XMLDocument();
elementNode = objDOM.createElement("BranchCompany");
textNode = objDOM.createTextNode(branchCompanyTable.BranchCompanyId);
elementNode.setAttribute("id", textNode.text());
textNode = objDOM.createTextNode(branchCompanyTable.branchCompanyName());
elementNode.setAttribute("name", textNode.text());
textNode = objDOM.createTextNode(date2str(today(), 123,2,2,2,2,2));
elementNode.setAttribute("transferDate", textNode.text());
branchCompany = objDOM.appendChild(elementNode);
procInctruction = objDOM.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"Windows-1251\" ");
elementNode = objDOM.insertBefore(procInctruction,
branchCompany.com());
Все конечно замечательно написано, но только заголовок с версией и кодировкой дублируется и сообщение на тему невозможности записи в кодировке не пропадает. Однако, как мне кажется, верным будет создание собственного класса, наследника от XMLDocument.
PHP код:
class XMLDocument_RU extends XMLDocument
{
}
public static XMLDocument newBlank()
{
COM dom = XMLDocument::XMLDOM();
xmlDocument xmlDocument = xmlNode::construct(dom);
XMLProcessingInstruction instruction = xmlDocument.createProcessingInstruction('xml', 'version="1.0" encoding="Windows-1251"');
;
xmlDocument.appendChild(instruction);
return xmlDocument;
}
Вот после этого все стало работать нормально.
Что меня смущает в этом вопросе: неужели до сих пор в стандартной функциональности Axapta не реализовано такого класса. Хотя, я не исключаю, что мне об этом просто не известно. Буду краней признателен за подсказку в этом вопросе, поскольку у меня стойкое ощущение, что мною был только что снова изобретен велосипед.