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>>
Как в DOM Delphi работать с множественными значениями тегов?
От: пустойчайник  
Дата: 16.01.07 14:59
Оценка:
Подскажите, пожалуйста, ответ на плохой вопрос?
Есть такой XML документ.

<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>


Как средствами библиотеки DOM в Delphi добраться до строк "за период с", "по", и поменять их на другие?
Re: Как в DOM Delphi работать с множественными значениями те
От: Аноним Великобритания  
Дата: 16.01.07 19:51
Оценка:
пустойчайник wrote:

> Как средствами библиотеки DOM в Delphi добраться до строк "за период с",

> "по", и поменять их на другие?
Для таких задач обычно более адекватно написать xslt-преобразование.

А вообще-то вопрос я не очень понял. Строки это так называемые Text Node, они являются потомками Element Node в котором
лежат. Вот и ходи по потомкам узла '<text:p text:style-name="P2">', находя там узлы типа Text Node.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[2]: Как в DOM Delphi работать с множественными значениями
От: Аноним  
Дата: 17.01.07 07:52
Оценка:
А>Для таких задач обычно более адекватно написать xslt-преобразование.

Понятно буду копать в направлении xslt.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.