Здравствуйте, пустойчайник, Вы писали:
П>Как средствами библиотеки 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>>