| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Формирование XML файла - приведите пример плиз!
			 
			
			Привет! 
		
		
		
		
		
		
		
	Не мог бы кто-нибудь привести пример формирования вот такого кусочка XML файла с помощью классов, работающих с XML. вот кусочек: <?xml version="1.0" encoding="windows-1251"?> <НДФЛ2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ВерсФорм="4.00001" ВерсПрог="НП 11.57" ИдФайл="ДОХОД_2НДФЛ_5003_5003056392500301001_20080211_1"> <Справка> <ОбщСвИЧ> <ГодДох>2007</ГодДох> <НомСпр>1</НомСпр> <ДатаСпр>11.02.2008</ДатаСпр> <ИФНСНА>5003</ИФНСНА> </ОбщСвИЧ> Да, да, в налоговую хотим файлик сгенерить...  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			можно просто воткнуть это в текстовый файл с нужным расширением ".xml"
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			простейший пример создания с помошью классов: 
		
		
		
		
		
		
		
	X++:     XMLElement              elementRoot;
    XMLElement              elementLines;
    ;
    document        = new XMLDocument();
    document.appendChild(document.createProcessingInstruction("xml", 'version="1.0" encoding="UTF-8"'));
    elementRoot     = document.createElement("TagName");
    document.appendChild(elementRoot);
    elementRoot.setAttribute("Name", "Value");
    elementLines    = document.createElement("TagName");
    elementRoot.appendChild(elementLines);
    document.save(fileName); | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			это какойто неправильный вариант... столько классов то не зря нам предоставили. А вот ясных примеров использования я чтото ненашел ни в АОТ ни здесь  
		
		
		
		
		
		
		
	 
		 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			я прям прослезился.. 
		
		
		
		
		
		
		
	поверь с помошью этих 2х классов можно создать xml файл  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо, щас потестю
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А как вот такую конструкцию задать? 
		
		
		
		
		
		
			
		
		
		
		
	<НДФЛ2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" В смысле, правильно, а не просто через SetAttribute  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Только вот этот кусочек: 
		
		
		
		
		
		
		
	X++: <?xml version="1.0" encoding="windows-1251"?> создаю объект не при помощи: X++: document = new XMLDocument(); document.appendChild(document.createProcessingInstruction("xml", 'version="1.0" encoding="UTF-8"')); X++:     COM               dom;
    dom                = XMLDocument::XMLDOM();
    document        = xmlNode::construct(dom);X++: // Финт ушами имени хитрого Алексея Климова resText = '<?xml version="1.0" encoding="Windows-1251" ?>' + "\n" + document.xml(); txtBuffOut = new TextBuffer(); txtBuffOut.setText(resText); txtBuffOut.toFile(FileName);  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вот что он мне выдал: 
		
		
		
		
		
		
		
	<?xml version="1.0" encoding="UTF-8"?> <TagName Name="Value"><TagName/></TagName> все равно не ясно - что это за <TagName/>? Нужна же простая вещь - <Tag1> <Tag2> <Tagname>Value</TagName> </Tag1> </Tag2> Ведь просто както должно делаться  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Вот так можно, к примеру, добавив такую строку перед сохранением в файл X++: elementLines.appendChild(document.createTextNode("Hello")); | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			elementLines.text("Value");
		 
		
		
		
		
		
		
		
		
			Последний раз редактировалось ice; 20.02.2008 в 12:25. Причина: исправил nodeValue на text  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Так врядли сработает - elementLines это тэг типа Element. А у него вроде не может быть value
		 
		
		
		
		
		
		
			
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вообще с XMLDocument можно как только не извращаться. Вот, например, вариант действия только через CreateNode и AppendChild: 
		
		
		
		
		
		
		
	X++:     TextBuffer              txtBuffOut;
    XMLDocument             xmlDoc;
    XMLElement              documentNode, lineItemNode, elemNode, valueNode;
    COM                     dom;
    str                     resText;
    ;
    dom             = XMLDocument::XMLDOM();
    xmlDoc          = xmlNode::construct(dom);
    documentNode    = xmlDoc.createNode(XMLNodeType::ELEMENT, "Tag1", "");
    while (  - )
        where (-)
    {
	    lineItemNode    = xmlDoc.createNode(XMLNodeType::ELEMENT, "Tag2", "");
            // Для каждого поля
            elemNode    = xmlDoc.createNode(XMLNodeType::ELEMENT, "Fileld1", "");
            valueNode   = xmlDoc.createNode(XMLNodeType::TEXT, "", "");
            valueNode.nodeValue("Значение поля 1");
            elemNode.appendChild(valueNode);
            lineItemNode.appendChild(elemNode);
		...
            elemNode    = xmlDoc.createNode(XMLNodeType::ELEMENT, "FileldN", "");
            valueNode   = xmlDoc.createNode(XMLNodeType::TEXT, "", "");
            valueNode.nodeValue("Значение поля N");
            elemNode.appendChild(valueNode);
            lineItemNode.appendChild(elemNode);
            documentNode.appendChild(lineItemNode);
        }
    }
    xmlDoc.appendChild(documentNode);
    resText = '<?xml version="1.0" encoding="Windows-1251" ?>' + "\n" + xmlDoc.xml();
    txtBuffOut  = new TextBuffer();
    txtBuffOut.setText(resText);
    txtBuffOut.toFile(FileName); | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А как бы так сделать, чтобы он выдавал их вот так: 
		
		
		
		
		
		
		
	<Tag1> <Tag2> <Tagname>Value</TagName> </Tag1> </Tag2> а не так (как сейчас): <Tag1><Tag2><Tagname>Value</TagName></Tag1></Tag2>  | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вот здесь ответ на этот вопрос: 
		
		
		
		
		
		
			
		
		
		
		
	XMLDocument вставка нового xmlElement c переходом на новую строку?  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
X++:     ..    
    xmlAttribute xmlAttr;
    ;
    xmlAttr = xml.createAttribute("xmlns:xsi");
    xmlAttr.nodeValue("http://www.w3.org/2001/XMLSchema-instance");
    myXml.attributes().setNamedItem( xmlAttr ); | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			[quote=Raven Melancholic;160335]Только вот этот кусочек: 
		
		
		
		
		
		
		
	X++: <?xml version="1.0" encoding="windows-1251"?> X++: xmlPI = xml.createProcessingInstruction("xml", 'version="1.0" encoding="windows-1251"'); xml.insertBefore( xmlPI, myXml.com() ); // это для 3.0 // xml.insertBefore( xmlPI, myXml ); // в 4.0  | 
| 
	
 |