|
![]() |
#1 |
Дмитрий Ерин
|
А можно вот так (в порядке тренировки навыков работы с XSLT):
X++: static void ResearchXSLT(Args _args) { #define.OldValue("value") #define.NewValue("NewValue") str fileName = "C:\\temp\\1.xml"; str xslt = strFmt('<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">'+ '<xsl:template match="*|@*|text()">'+ '<xsl:copy>'+ '<xsl:apply-templates select="*|@*|text()"/>'+ '</xsl:copy>'+ '</xsl:template>'+ '<xsl:template match="@atribut[.=\'%1\']">' + '<xsl:attribute name="atribut">%2</xsl:attribute> '+ '</xsl:template>'+ '</xsl:stylesheet>', #OldValue, #NewValue); str outXml = ''; System.Xml.XmlReader xslReader; System.Xml.XmlReader xmlReader; System.Xml.XmlTextWriter xmlWriter; System.IO.StringReader stringReader; System.IO.StringWriter stringWriter; System.Xml.Xsl.XslCompiledTransform xslTransform; System.IO.StreamWriter streamWriter; ; new InteropPermission(InteropKind::ClrInterop).assert(); info(xslt); stringReader = new System.IO.StringReader(xslt); xslReader = System.Xml.XmlReader::Create(stringReader); xmlReader = System.Xml.XmlReader::Create(fileName); xslTransform = new System.Xml.Xsl.XslCompiledTransform(); xslTransform.Load(xslReader); stringWriter = new System.IO.StringWriter(); xmlWriter = new System.Xml.XmlTextWriter(stringWriter); xslTransform.Transform(xmlReader, xmlWriter); xmlReader.Close(); xmlWriter.Close(); outXml = stringWriter.ToString(); streamWriter = new System.IO.StreamWriter(fileName); streamWriter.Write(outXml); streamWriter.Close(); CodeAccessPermission::revertAssert(); info(outXml); }
__________________
![]() |
|
![]() |
#2 |
Участник
|
В дополнение к примеру b_nosoff выложу свой, возможно, будет полезен
X++: #define.text2('text2') #define.Atribut('atribut') #define.path(@"Your file path") XMLDocument xmlDoc; XmlElement xmlNode; XmlNodeList xmlNodeList; XMLAttribute attribute; ; xmlDoc = XMLDocument::newFile(#path); xmlNodeList = xmlDoc.getElementsByTagName(#text2); for (xmlNode = xmlNodeList.nextNode(); xmlNode != null; xmlNode = xmlNodeList.nextNode()) { attribute = xmlNode.getAttributeNode(#Atribut); if (attribute) { attribute.text('New value'); } } xmlDoc.save(#path); |
|
Теги |
attribute, xml, xmldocument, атрибут |
|
|