|
|
#1 |
|
Axapta Retail User
|
XML
Помогите с XML Мне нужно получить файл вида
<?xml version="1.0" encoding = "utf-8"?> <section> <id>1001</id> <sum> 100</sum> <section> Делаю так X++: xmlDocument = XMLDocument::newBlank();
xmlDocument.createProcessingInstruction('xml', 'version="1.0" encoding="utf-8"');<?xml version="1.0" encoding="iso-8859-1" ?> Где посмотреть подобные примеры? |
|
|
|
|
#2 |
|
Участник
|
Если я не путаю, то кодировку нужно проставлять в самом методе "newBlank". Попробуйте что-то вроде этого (Проблема с сохранением XML).
|
|
|
|
| За это сообщение автора поблагодарили: novic (1). | |
|
|
#3 |
|
Axapta Retail User
|
Спасибо с кодировкой разобрался. Теперь не получается
X++: root = xmlDocument.createNode(XMLNodeType::ELEMENT, #Name, ""); root2 = xmlDocument.createNode(XMLNodeType::ELEMENT, #Date, ""); root3 = xmlDocument.createNode(XMLNodeType::ELEMENT, #By, ""); docElem = xmlDocument.appendChild(root); docElem2 = docElem.appendChild(root2); node = xmlDocument.createTextNode(date2str(today(), 123,2,2,2,2,2)); docElem3 = docElem.appendChild(root3); node = xmlDocument.createTextNode('Ivan'); xmlDocument.save("c:\\XML.xml"); PHP код:
|
|
|
|
|
#4 |
|
MCTS
|
Попробуйте что нибудь типа:
X++: root = xmlDocument.createNode(XMLNodeType::ELEMENT, #Name, ""); root2 = xmlDocument.createNode(XMLNodeType::ELEMENT, #Date, ""); root2.nodeValue(date2str(today(), 123,2,2,2,2,2)); root3 = xmlDocument.createNode(XMLNodeType::ELEMENT, #By, ""); root3.nodeValue('Ivan'); docElem = xmlDocument.appendChild(root); docElem2 = docElem.appendChild(root2); docElem3 = docElem.appendChild(root3); xmlDocument.save("c:\\XML.xml");
Последний раз редактировалось PavelX; 06.04.2010 в 16:42. Причина: поправил теги |
|
|
|
|
#5 |
|
Axapta Retail User
|
Метод "nodeValue" в COM-объекте класса "IXMLDOMElement" возвратил код ошибки 0x80004005 (E_FAIL), который означает: Это действие невозможно выполнить для узла типа ELEMENT.
|
|
|
|
|
#6 |
|
MCTS
|
Ошибочка, попробуйте так:
X++: root = xmlDocument.createNode(XMLNodeType::ELEMENT, "Name", ""); root2 = xmlDocument.createNode(XMLNodeType::ELEMENT, "Date", ""); root3 = xmlDocument.createNode(XMLNodeType::ELEMENT, "By", ""); docElem = xmlDocument.appendChild(root); docElem2 = docElem.appendChild(root2); docElem3 = docElem.appendChild(root3); root2.text(date2str(today(), 123,2,2,2,2,2)); root3.text('Ivan'); xmlDocument.save("С:\\XML.xml"); |
|
|
|
|
#7 |
|
Участник
|
что вам пытаются втолковать:
задавайте текст у только что созданного элемента, а не у документа. Неправильно: X++: docElem = xmlDocument.appendChild(root);
docElem2 = docElem.appendChild(root2);
node = xmlDocument.createTextNode(date2str(today(), 123,2,2,2,2,2));X++: docElem = xmlDocument.appendChild(root);
docElem2 = docElem.appendChild(root2);
node = docElem2.createTextNode(date2str(today(), 123,2,2,2,2,2)); |
|
|
|
|
#8 |
|
Участник
|
Ну, если взять исходную задачу, то нужно что-нибудь подобное:
Код: XMLElement filedNode, xmlElementRoot;
;
xmlElementRoot= xmlDocument.createElement("section");
filedNode= xmlDocument.createElement("id");
filedNode.text("1001");
xmlElementRoot.appendChild(filedNode);
filedNode= xmlDocument.createElement("sum");
filedNode.text("100");
xmlElementRoot.appendChild(filedNode);
xmlDocument.appendChild(xmlElementRoot);Последний раз редактировалось Raven Melancholic; 06.04.2010 в 17:20. Причина: mazzy обогнал |
|
|
|
|
#9 |
|
Участник
|
А если без класса XMLDocument ? если просто писать нужное содержание со всеми тегами в текстовый файл с расширением xml ?
|
|
|
|
|
#10 |
|
Читатель
|
Просто для информации - формат даты в XML
PHP код:
X++: node = xmlDocument.createElement("Date"); node.text(date2str(date, 321, 2, 3, 2, 3, 4)); rootNode.appendChild(node); |
|
|
|
|
#11 |
|
Участник
|
Версия AX - 5.0?
Если так, можно использовать технологию LINQ, с ней гораздо удобнее создавать XML документы. Нужно подключить ссылку (reference) на System.Xml.Linq (правда нужен .Net framework 3.5 версии) код создания вашего док-та: X++: System.Xml.Linq.XElement document=new System.Xml.Linq.XElement(System.Xml.Linq.XName::Get("section")); System.Exception e; ; try { document.Add(new System.Xml.Linq.XElement(System.Xml.Linq.XName::Get("id"),1001)); document.Add(new System.Xml.Linq.XElement(System.Xml.Linq.XName::Get("sum"),100)); document.Save("c:\\test.xml"); } catch(Exception::CLRError) { e = ClrInterop::getLastException(); while( e ) { info( e.get_Message() ); e = e.get_InnerException(); } } Последний раз редактировалось jonny; 07.04.2010 в 08:01. |
|
|
|
| За это сообщение автора поблагодарили: gl00mie (5). | |
|
|
#12 |
|
Axapta Retail User
|
|
|
|
|
|
#13 |
|
Axapta Retail User
|
Цитата:
Сообщение от PavelX
Ошибочка, попробуйте так:
X++: root = xmlDocument.createNode(XMLNodeType::ELEMENT, "Name", ""); root2 = xmlDocument.createNode(XMLNodeType::ELEMENT, "Date", ""); root3 = xmlDocument.createNode(XMLNodeType::ELEMENT, "By", ""); docElem = xmlDocument.appendChild(root); docElem2 = docElem.appendChild(root2); docElem3 = docElem.appendChild(root3); root2.text(date2str(today(), 123,2,2,2,2,2)); root3.text('Ivan'); xmlDocument.save("С:\\XML.xml"); Последний раз редактировалось novic; 07.04.2010 в 09:08. |
|
|
| Теги |
| xml, кодировка |
|
|
|