| 
			
			 | 
		#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, кодировка | 
| 
	
	 | 
	
		
  |