Re: Как в DOM Delphi работать с множественными значениями те
От: Lloyd Россия  
Дата: 16.01.07 15:23
Оценка: 2 (1)
Здравствуйте, пустойчайник, Вы писали:

П>Как средствами библиотеки DOM в Delphi добраться до строк "за период с", "по", и поменять их на другие?


Не совсем Delphi (нет под рукой), но средствами DOM:
using System;
using System.Xml;

namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlDocument xDoc = new XmlDocument();
            xDoc.LoadXml(@"<root xmlns:text=""your-namespace-for-text""><text:p text:style-name=""P2"">
  Отчет « 
  <text:placeholder>REP_CAPTION</text:placeholder> 
  » 
  </text:p>
<text:p text:style-name=""P2"">
  за период с 
  <text:placeholder>REPFROM</text:placeholder> 
  по 
  <text:placeholder>REPTO</text:placeholder> 
</text:p>
</root>");
            replacePlaceHolder(xDoc, "REPFROM", "qqq");
            replacePlaceHolder(xDoc, "REPTO", "...");

            Console.WriteLine(xDoc.OuterXml);
            Console.ReadLine();
        }

        private static void replacePlaceHolder(XmlDocument xDoc, string placeHolderId, string value)
        {
            XmlNamespaceManager nsMan = new XmlNamespaceManager(xDoc.NameTable);
            nsMan.AddNamespace("t", "your-namespace-for-text");
            XmlNode placeHolderNode = xDoc.SelectSingleNode(string.Format("//t:placeholder[text() = '{0}']", placeHolderId), nsMan);
            if (placeHolderNode != null && placeHolderNode.ParentNode != null)
                placeHolderNode.ParentNode.ReplaceChild(xDoc.CreateTextNode(value), placeHolderNode);
        }
    }
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.