AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.12.2013, 11:40   #1  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
А можно вот так (в порядке тренировки навыков работы с 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);        
}
__________________
Старый 21.12.2013, 15:19   #2  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
В дополнение к примеру 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, атрибут

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Перевод строки в xml-файле Ivanhoe DAX: Программирование 48 13.02.2012 12:54
kamalblogs: Converting a System.Xml.XmlDocument to XML type in Dynamics ax Blog bot DAX Blogs 0 19.04.2010 09:05
X++: Serializing Axapta Foundation Class instances as XML streams Blog bot DAX Blogs 0 04.06.2009 23:05
PatrickChua: XML serialization Blog bot DAX Blogs 0 04.05.2009 14:05
axStart: How to use XSLT in AIF and what’s wrong with empty xml Nodes. Blog bot DAX Blogs 0 27.04.2008 18:07

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:33.