Трансформування ХМЛ документу
Функція створення ХМЛ файлу
void GenerateCode(string fileName)
{
XmlDocument xmlConfDocument = new XmlDocument();
xmlConfDocument.AppendChild(xmlConfDocument.CreateXmlDeclaration("1.0", "utf-8", ""));
XmlElement rootNode = xmlConfDocument.CreateElement("root");
xmlConfDocument.AppendChild(rootNode);
XmlElement nodeDirectory = xmlConfDocument.CreateElement("Directory");
rootNode.AppendChild(nodeDirectory);
XmlElement nodeDirectoryName = xmlConfDocument.CreateElement("Name");
nodeDirectoryName.InnerText = ConfDirectory.Name;
nodeDirectory.AppendChild(nodeDirectoryName);
Dictionary arguments = new Dictionary();
arguments.Add("File", fileName);
string text = Transform
(
xmlConfDocument,
System.IO.Path.Combine(AppContext.BaseDirectory, "xslt/ConstructorDirectory.xslt"),
arguments
);
}
Функція трансформування
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;
public static string? Transform(XmlDocument xmlDoc, string pathToTemplate, Dictionary? arguments)
{
XPathNavigator? navigator = xmlDoc.CreateNavigator();
string result = "";
if (navigator != null)
{
XslCompiledTransform xsltCodeGnerator = new XslCompiledTransform();
xsltCodeGnerator.Load(pathToTemplate, new XsltSettings(true, true), null);
XsltArgumentList? xsltArgumentList = null;
if (arguments != null)
{
xsltArgumentList = new XsltArgumentList();
foreach (KeyValuePair argument in arguments)
xsltArgumentList.AddParam(argument.Key, "", argument.Value);
}
using (TextWriter writer = new StringWriter())
{
xsltCodeGnerator.Transform(navigator, xsltArgumentList, writer);
result = writer?.ToString() ?? "";
}
}
return result;
}
Функція трансформування із записом у файл
public static void Transform2(string pathToXML, string pathToTemplate, string pathToSaveCode)
{
XslCompiledTransform xsltCodeGnerator = new XslCompiledTransform();
xsltCodeGnerator.Load(pathToTemplate, new XsltSettings(true, true), null);
XsltArgumentList xsltArgumentList = new XsltArgumentList();
xsltArgumentList.AddParam("KeyUID", "", DateTime.Now.ToString("dd_MM_yyyy_HH_mm_ss"));
FileStream fileStream = new FileStream(pathToSaveCode, FileMode.Create);
xsltCodeGnerator.Transform(pathToXML, xsltArgumentList, fileStream);
fileStream.Close();
}
Шаблон XSLT
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="yes" />
<!-- Файл -->
<xsl:param name="File" />
<xsl:template match="root">
</xsl:template>
</xsl:stylesheet>
accounting.org.ua © 2023 рік