Hi Friend,
enjoy with this job who is copy an XML File identically and less you to create an document with your Ax specified record
static voidReadAndWriteIdenticalXMLFile(Args _args)
{
//READ
XmlDeclaration Xmldeclaration;
XMLDocument doc;
XMLNode rootNode, XMLRead;
XMLParseError xmlError;
str XmlName;
//WRITE
XmlDocument xmlDoc;
XMLWriter XMLWriter;
XmlElement AnyXmlNode,XMLWrite;
void RecursiveXml(XMLNode _XMLRead,XmlElement _AnyXmlNode)
{
int NumberElement, x, continuereading, i, NumberOfAttributes;
XmlAttribute XmlAttributeRead;
str XmlNodeName;
XmlElement AnyXmlNodeInternal;
NumberElement = _XMLRead.childNodes().length();
for(x = 1;x<=NumberElement;x++)
{
if(x==1)
{
_XMLRead = _XMLRead.firstChild();
}
else
{
_XMLRead = _XMLRead.nextSibling();
}
XmlNodeName = _XMLRead.name();
continuereading =_XMLRead.hasChildNodes();
XMLWrite = xmlDoc.createElement(XmlNodeName);
NumberOfAttributes = _XMLRead.attributes().length();
for(i = 0;i<NumberOfAttributes;i++)
{
XmlAttributeRead = _XMLRead.attributes().item(i);
XMLWrite.setAttribute(XmlAttributeRead.name(),XmlAttributeRead.nodeValue());
}
AnyXmlNodeInternal =_AnyXmlNode.appendChild(XMLWrite);
if(continuereading && _XMLRead.childNodes().nextNode().name() != "#text")
{
RecursiveXml(_XMLRead,AnyXmlNodeInternal);
}
else
{
XMLWrite.innerText(_XMLRead.innerText());
}
}
_XMLRead = _XMLRead.parentNode();
}
// Get the XML document
doc = new XMLDocument();
//doc.async(FALSE);
doc.load(@"D:\\FileNameToRead.xml");
xmlError = doc.parseError();
if (xmlError && xmlError.errorCode() != 0)
{
print "Error: " + xmlError.reason();
pause;
return;
}
rootNode = doc.documentElement();
xmlDoc = new XmlDocument();
Xmldeclaration = xmlDoc.createXmlDeclaration("1.0","UTF-8","no");
xmlDoc.insertBefore(Xmldeclaration,xmlDoc.documentElement());
XmlName = doc.childNodes().nextNode().nextSibling().name();
AnyXmlNode = xmlDoc.createElement(XmlName);
XMLWrite = xmlDoc.appendChild(AnyXmlNode);
XMLRead = rootNode.selectSingleNode("//"+XmlName);
RecursiveXml(XMLRead,AnyXmlNode);
XMLWriter = XMLWriter::newFile(@"D:\\FileNameToWrite.xml");
xmlDoc.writeTo(XMLWriter);
}
Aucun commentaire:
Enregistrer un commentaire