} // End Sub Add_SEL_User_DataSet public static string CreateFragmentString(string strFilename, string strXmlFragment) { System.Xml.XmlDocument doc = XmlTools.File2XmlDocument(strFilename); System.Xml.XmlNamespaceManager nsmgr = GetReportNamespaceManager(doc); doc = null; string strXmlFragment2 = @"<?xml version=""1.0"" encoding=""utf-8""?> <Report "; IDictionary <string, string> dic = nsmgr.GetNamespacesInScope(System.Xml.XmlNamespaceScope.Local); foreach (System.Collections.Generic.KeyValuePair <string, string> kvp in dic) { if (StringComparer.InvariantCultureIgnoreCase.Equals(kvp.Key, "dft")) { strXmlFragment2 += "xmlns=\"" + kvp.Value + "\" "; } else { strXmlFragment2 += "xmlns:" + kvp.Key + "=\"" + kvp.Value + "\" "; } System.Console.WriteLine(kvp); } // Next kvp strXmlFragment2 += ">\n"; strXmlFragment2 += strXmlFragment; strXmlFragment2 += @" </Report>"; return(strXmlFragment2); } // End Function CreateFragmentString
} // End Function GetParameterPrompt // ChangeParameterPrompt(strFileName, "in_standortkategorie", "Liegenschaftskategorie / Catégorie d'immeuble / Categoria di patrimonio immobiliare / Estate category"); // ChangeParameterPrompt(strFileName, "in_standortkategorie", "Standortkategorie / Catégorie site / Categoria sito / Site category"); // ChangeParameterPrompt(strFileName, "in_standort", "Standort / Site / Sito / Site"); // ChangeParameterPrompt(strFileName, "in_standort", "Liegenschaft / Immeuble / Patrimonio immobiliare / Estate"); // ChangeParameterPrompt(strFileName, "in_gebaeude", "Gebäude / Bâtiment / Edificio / Building"); public static void ChangeParameterPrompt(string strFilename, string strReportParameterName, string strReplacementText) { System.Xml.XmlDocument doc = XmlTools.File2XmlDocument(strFilename); System.Xml.XmlNamespaceManager nsmgr = GetReportNamespaceManager(doc); if (!HasParameter(doc, strReportParameterName)) { return; } System.Xml.XmlNode xnParameterPrompt = GetParameterPrompt(doc, strReportParameterName); string strReportName = System.IO.Path.GetFileNameWithoutExtension(strFilename); if (xnParameterPrompt != null) { string strParameterValue = xnParameterPrompt.FirstChild.Value; xnParameterPrompt.FirstChild.Value = strReplacementText; Logging.LogMessage("Old value in {0}:\t{1}", strReportName, strParameterValue); } // End if (xnParameterPrompt != null) else { Logging.LogMessage("{0}\tKein Parameter " + strReportParameterName, strReportName); } XmlTools.SaveDocument(doc, strFilename); } // End Sub ChangeParameterPrompt
} // End Function GetReportNamespaceManager // /dft:Report/dft:DataSets/dft:DataSet[1] public static System.Collections.Generic.List <string> GetDataSets(string strFilename) { System.Xml.XmlDocument doc = XmlTools.File2XmlDocument(strFilename); System.Xml.XmlNamespaceManager nsmgr = GetReportNamespaceManager(doc); return(GetDataSets(doc)); } // End Function GetDataSets
} // End Sub ChangeParameterPrompt public static void ChangeStichtag(string strFilename) { System.Xml.XmlDocument doc = XmlTools.File2XmlDocument(strFilename); System.Xml.XmlNamespaceManager nsmgr = GetReportNamespaceManager(doc); System.Xml.XmlNode xnStichtag = doc.SelectSingleNode("/dft:Report/dft:ReportParameters/dft:ReportParameter[@Name=\"in_stichtag\"]/dft:DefaultValue/dft:Values/dft:Value", nsmgr); string strReportName = System.IO.Path.GetFileNameWithoutExtension(strFilename); if (!HasParameter(doc, "in_stichtag")) { return; } if (xnStichtag != null) { xnStichtag.FirstChild.Value = "=System.DateTime.Now.ToString(\"dd.MM.yyyy\")"; string strStichTag = xnStichtag.FirstChild.Value; Logging.LogMessage("{0}\t{1}", strReportName, strStichTag); // =System.DateTime.Today.ToString("dd.MM.yyyy") } // End if (xnStichtag != null) else { Logging.LogMessage("{0}\tKein Parameter Stichtag", strReportName); } // =System.DateTime.Today.ToString("dd.MM.yyyy") // stichtagvalue.FirstChild.Value = "=System.DateTime.Today.ToString(\"dd.MMMM.yyyy\")"; XmlTools.SaveDocument(doc, strFilename); } // End Sub ChangeStichtag
} // End Function GetParameter public static string GetParameterDefaultValue(string fileName, string strParameterName) { System.Xml.XmlDocument doc = XmlTools.File2XmlDocument(fileName); System.Xml.XmlNamespaceManager nsmgr = GetReportNamespaceManager(doc); return(GetParameterDefaultValue(doc, strParameterName)); } // End Function GetParameterDefaultValue
} // End Function HasParameter public static bool HasParameter(string strFilename, string strParameterName) { System.Xml.XmlDocument doc = XmlTools.File2XmlDocument(strFilename); System.Xml.XmlNamespaceManager nsmgr = GetReportNamespaceManager(doc); return(HasParameter(doc, strParameterName)); } // End Function HasParameter
} // End Sub PrintProc public static void PrintMandant(string strFilename) { System.Xml.XmlDocument doc = XmlTools.File2XmlDocument(strFilename); System.Xml.XmlNamespaceManager nsmgr = GetReportNamespaceManager(doc); System.Xml.XmlNode xnMandant = doc.SelectSingleNode("/dft:Report/dft:ReportParameters/dft:ReportParameter[@Name=\"in_mandant\"]/dft:DefaultValue/dft:Values/dft:Value", nsmgr); string strReportName = System.IO.Path.GetFileNameWithoutExtension(strFilename); if (xnMandant != null) { Logging.LogMessage("{0}\t{1}", strReportName, xnMandant.FirstChild.Value); } else { Logging.LogMessage("{0}\tKein Parameter in_mandant", strReportName); } } // End Sub PrintMandant
public static void AddOrReplaceParameter(string strFilename, string parameterName, string strAppendAfterParameter, string fragment) { string strName = GetNameFromFragment(fragment); if (!StringComparer.InvariantCultureIgnoreCase.Equals(strName, parameterName)) { throw new Exception("Parameter name mismatch - \"" + parameterName + "\" != \"" + strName + "\""); } System.Xml.XmlNode xnPrevious = null; System.Xml.XmlNode xn = GetParameter(strFilename, parameterName); bool bFirst = false; if (xn != null) { xnPrevious = xn.PreviousSibling; xn.ParentNode.RemoveChild(xn); XmlTools.SaveDocument(xn.OwnerDocument, strFilename, true); } // End if (xn != null) if (xnPrevious == null) { xnPrevious = GetParameter(strFilename, strAppendAfterParameter); } // End if (xnPrevious == null) if (xnPrevious == null) { System.Xml.XmlDocument doc = XmlTools.File2XmlDocument(strFilename); System.Xml.XmlNamespaceManager nsmgr = GetReportNamespaceManager(doc); xnPrevious = doc.SelectSingleNode("/dft:Report/dft:ReportParameters", nsmgr); bFirst = true; if (xnPrevious == null) { return; } } // End if (xnPrevious == null) AddCustomParameter(strFilename, xnPrevious, bFirst, false, fragment); } // End Sub AddOrReplaceParameter
public static void AddCustomParameter(string strFilename, string strParameterName, string strAppendAfterParameter, string strXmlFragment) { System.Xml.XmlDocument doc = XmlTools.File2XmlDocument(strFilename); System.Xml.XmlNamespaceManager nsmgr = GetReportNamespaceManager(doc); if (HasParameter(doc, strParameterName)) { return; } System.Xml.XmlNode xnParameters = doc.SelectSingleNode("/dft:Report/dft:ReportParameters", nsmgr); if (xnParameters == null) { return; } bool bFirst = StringComparer.OrdinalIgnoreCase.Equals(strAppendAfterParameter, "first"); bool bLast = StringComparer.OrdinalIgnoreCase.Equals(strAppendAfterParameter, "last"); System.Xml.XmlNode xnAppendAfterThis = null; if (bFirst || bLast) { xnAppendAfterThis = xnParameters; } else { xnAppendAfterThis = GetParameter(doc, strAppendAfterParameter); } AddCustomParameter(strFilename, xnAppendAfterThis, bFirst, bLast, strXmlFragment); } // End Function AddCustomParameter
} // End Sub AddCustomDataSet public static void AddCustomDataSet(string strFilename, string strDataSetName, string strXmlFragment) { System.Xml.XmlDocument doc = XmlTools.File2XmlDocument(strFilename); System.Xml.XmlNamespaceManager nsmgr = GetReportNamespaceManager(doc); if (HasDataSet(doc, strDataSetName)) { return; } string strReportName = System.IO.Path.GetFileNameWithoutExtension(strFilename); System.Xml.XmlNode xnDataSets = doc.SelectSingleNode("/dft:Report/dft:DataSets", nsmgr); if (xnDataSets != null) { System.Xml.XmlNode xnAppendAfterThis = null; // bool bFirst = StringComparer.OrdinalIgnoreCase.Equals(strAppendAfterParameter, "first"); // bool bLast = StringComparer.OrdinalIgnoreCase.Equals(strAppendAfterParameter, "last"); // bool bDoNotFechParameter = bFirst || bLast; // if (!bDoNotFechParameter) // xnAppendAfterThis = GetParameter(doc, strAppendAfterParameter); xnAppendAfterThis = xnDataSets; if (xnAppendAfterThis != null) // || bDoNotFechParameter) { Logging.LogMessage("{0}\t{1}", strReportName, "Has DataSets"); System.Xml.XmlDocument doc2 = new System.Xml.XmlDocument(); doc2.LoadXml(CreateFragmentString(strFilename, strXmlFragment)); System.Xml.XmlNode fragmentToInsert = doc2.DocumentElement.FirstChild; doc2 = null; // System.Xml.XmlDocumentFragment xmlDocFrag = doc.CreateDocumentFragment(); // xmlDocFrag.InnerXml = strXmlFragment; // // xmlDocFrag.AppendChild(doc.ImportNode(fragmentToInsert, true)); // employeeNode.AppendChild(employeeNode.OwnerDocument.ImportNode(otherXmlDocument.DocumentElement, true)); // xnAppendAfterThis.ParentNode.InsertAfter(fragmentToInsert, xnAppendAfterThis); // xnAppendAfterThis.ParentNode.InsertAfter(doc.ImportNode(fragmentToInsert, true), xnAppendAfterThis); xnAppendAfterThis.AppendChild(doc.ImportNode(fragmentToInsert, true)); // xnAppendAfterThis.ParentNode.InsertAfter(xmlDocFrag, xnAppendAfterThis); //if (bDoNotFechParameter) //{ // if (bFirst) // xnDataSets.PrependChild(xmlDocFrag); // else // xnDataSets.AppendChild(xmlDocFrag); //} //else //{ // xnAppendAfterThis.ParentNode.InsertAfter(xmlDocFrag, xnAppendAfterThis); //} // End else of if (bDoNotFechParameter) } // End if (xnAppendAfterThis != null || string.IsNullOrEmpty(strAppendAfterParameter)) else { Logging.LogMessage("{0}\tKeine Parameter in Report.", strReportName); } } // End if (xnParameters != null) XmlTools.SaveDocument(doc, strFilename, true); //XmlTools.SaveDocument(doc, strFilename, "<ReportParameter Name=\"proc\" xmlns=\"\">", "<ReportParameter Name=\"proc\">"); } // End Sub AddCustomDataSet
public static System.Xml.XmlNode GetDataSetsNode(string strFilename) { System.Xml.XmlDocument doc = XmlTools.File2XmlDocument(strFilename); return(GetDataSetsNode(doc)); }
} // End Function GetImageTag // AlterImage(strFileName, "in_gebaeude", "Gebäude / Bâtiment / Edificio / Building"); public static void AlterImage(string strFilename, string strReportParameterName) { System.Xml.XmlDocument doc = XmlTools.File2XmlDocument(strFilename); System.Xml.XmlNamespaceManager nsmgr = GetReportNamespaceManager(doc); string strReportName = System.IO.Path.GetFileNameWithoutExtension(strFilename); System.Xml.XmlNode xnImageTag = GetImageTag(doc, strReportParameterName); // System.Console.WriteLine(xnImageTag); if (xnImageTag == null) { Logging.LogMessage("{0}\tKein Image in " + strReportParameterName, strReportName); return; } // End if (xnImageTag == null) // http://www.w3schools.com/xpath/xpath_syntax.asp // http://www.bennadel.com/blog/2142-using-and-expressions-in-xpath-xml-search-directives-in-coldfusion.htm System.Xml.XmlNode xnSource = xnImageTag.SelectSingleNode("./dft:Source", nsmgr); xnSource.InnerText = "External"; System.Xml.XmlNode xnValue = xnImageTag.SelectSingleNode("./dft:Value", nsmgr); xnValue.InnerText = "logo_immo.png"; System.Xml.XmlNode xnSizing = xnImageTag.SelectSingleNode("./dft:Sizing", nsmgr); xnSizing.InnerText = "FitProportional"; System.Xml.XmlNode xnLeft = xnImageTag.SelectSingleNode("./dft:Left", nsmgr); // System.Xml.XmlNode xnPageWidth = doc.SelectSingleNode("/dft:Report/dft:Page/dft:PageWidth", nsmgr); // System.Xml.XmlNode xnPageHeight = doc.SelectSingleNode("/dft:Report/dft:Page/dft:PageHeight", nsmgr); if (xnLeft != null) { double strLeft = ConvertToCm(xnLeft.InnerText); // double strPageWidth = ConvertToCm(xnPageWidth.InnerText); // double strPageHeight = ConvertToCm(xnPageHeight.InnerText); if (strLeft > 10) // Right aligned logo { System.Xml.XmlNode xnStyle = xnImageTag.SelectSingleNode("./dft:Style", nsmgr); if (xnStyle != null) { System.Xml.XmlNode xnPadding = xnStyle.SelectSingleNode("./dft:PaddingLeft", nsmgr); if (xnPadding == null) { var ele = doc.CreateElement("PaddingLeft", doc.DocumentElement.NamespaceURI); ele.InnerText = "45pt"; System.Xml.XmlNode xnCrap = xnStyle.AppendChild(ele); // xnCrap.Attributes.Remove(xnCrap.Attributes["xmlns"]); } // End if (xnPadding == null) } // End if (xnStyle != null) } // End if (strLeft > 10) } // End if (xnLeft != null) // else System.Console.WriteLine("Null left " + strFilename); ///dft:Report/dft:Page/dft:PageHeader/dft:ReportItems/dft:Image/dft:Style/dft:PaddingLeft XmlTools.SaveDocument(doc, strFilename); } // End Sub ChangeParameterPrompt
static void OldMain() { bool b = false; // Remove "Unreachable Code" warning if (b) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } // End if (false) string strPath = @"S:\StefanSteiger\COR_Basic\"; //string strReport = "GM_Gebaeudestammdaten.rdl"; string strReport = "GM_Gebaeudestammdaten_ML.rdl"; strReport = "AL_Anlageninventar_ML.rdl"; strReport = "FM_NutzungsartenDIN_277_Wincasa_ML.rdl"; strReport = "FM_NutzungsartenDIN_277_Wincasa_ML.rdl"; strReport = "KU_Kunstinventar_ML.rdl"; string FILE_NAME = System.IO.Path.Combine(strPath, strReport); // AddProc(FILE_NAME); // AddMandant(FILE_NAME); // ReadUsingReportViewer(FILE_NAME); //Select the cd node with the matching title System.Xml.XmlDocument doc = XmlTools.File2XmlDocument(FILE_NAME); string strXML = @" <result> <relatedProducts> <item> <id>123foo</id> <name>foo</name> <text>Foobar</text> </item> <item> <id>hello</id> <name>bye</name> <text>ciao</text> </item> <item> <id></id> <name></name> <text></text> </item> </relatedProducts> </result> "; System.Xml.XmlDocument mydoc = new System.Xml.XmlDocument(); mydoc.LoadXml(strXML); //System.Xml.XmlNodeList x = mydoc.SelectNodes("//*[text()"); // Should be: mydoc.SelectNodes("//*/*[text()"); //System.Xml.XmlNodeList x = mydoc.SelectNodes("//*[contains(text(), 'foo')]"); System.Xml.XmlNodeList x = mydoc.SelectNodes("//*[contains(translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜÉÈÊÀÁÂÒÓÔÙÚÛÇÅÏÕÑŒ', 'abcdefghijklmnopqrstuvwxyzäöüéèêàáâòóôùúûçåïõñœ'),'foo')]"); // Should be: mydoc.SelectNodes("//*/*[text()"); Console.WriteLine(x.Count); //Select the cd node with the matching title System.Xml.XmlElement root = doc.DocumentElement; System.Xml.XmlNamespaceManager nsmgr = ReportServerTools.GetReportNamespaceManager(doc); //System.Xml.XmlNodeList xxx = oldCd.SelectNodes("xpath"); //System.Xml.XmlNodeList xxx = root.SelectNodes("//*/dft:*[text()=\"String\"]", nsmgr); System.Xml.XmlNodeList xxx = root.SelectNodes("//*/dft:*[text()]", nsmgr); Console.WriteLine(xxx.Count); System.Xml.XmlNode oldCd = root.SelectSingleNode("/dft:Report/dft:DataSources/dft:DataSource[@Name=\"COR_Basic\"]", nsmgr); // System.Xml.XmlNode RepParams = root.SelectSingleNode("/dft:Report/dft:ReportParameters", nsmgr); // System.Xml.XmlNodeList AllParams = RepParams.SelectNodes("//dft:ReportParameter", nsmgr); // http://stackoverflow.com/questions/3655549/xpath-containstext-some-string-doesnt-work-when-used-with-node-with-more //System.Xml.XmlNodeList AllParams = root.SelectNodes("/dft:Report/dft:ReportParameters/dft:ReportParameter", nsmgr); System.Xml.XmlNodeList AllParams = root.SelectNodes("/dft:Report/dft:ReportParameters/dft:ReportParameter/dft:Prompt[contains(text(),\"Liegenschaft\")]", nsmgr); Console.WriteLine(AllParams.Count); Console.WriteLine(" ----------------------------------------- "); foreach (System.Xml.XmlNode ThisParameter in AllParams) { // XmlAttribute a = doc.SelectSingleNode("/reply/@success"); Console.WriteLine(ThisParameter.Attributes["Name"].Value); System.Xml.XmlNode ParamDataType = ThisParameter.SelectSingleNode("//dft:DataType", nsmgr); Console.WriteLine(ParamDataType.FirstChild.Value); } // Next ThisParameter System.Xml.XmlNodeList stichtage = root.SelectNodes("/dft:Report/dft:ReportParameters/dft:ReportParameter[@Name=\"in_stichtag\"]", nsmgr); System.Xml.XmlNode stichtag = root.SelectSingleNode("/dft:Report/dft:ReportParameters/dft:ReportParameter[@Name=\"in_stichtag\"]", nsmgr); System.Xml.XmlNode stichtagvalue = root.SelectSingleNode("/dft:Report/dft:ReportParameters/dft:ReportParameter[@Name=\"in_stichtag\"]/dft:DefaultValue/dft:Values/dft:Value", nsmgr); Console.WriteLine(stichtagvalue.FirstChild.Value); // /dft:Report/dft:ReportParameters/dft:ReportParameter[@Name="in_gebaeude"] System.Xml.XmlNode datasetname = root.SelectSingleNode("/dft:Report/dft:ReportParameters/dft:ReportParameter[@Name=\"in_gebaeude\"]/dft:DefaultValue/dft:DataSetReference/dft:DataSetName", nsmgr); string dataset = datasetname.FirstChild.Value; System.Xml.XmlNode dsn = root.SelectSingleNode("/dft:Report/dft:DataSets/dft:DataSet[@Name=\"SEL_Gebaeude\"]", nsmgr); System.Xml.XmlNode dsn3 = root.SelectSingleNode("/dft:Report/dft:DataSets/dft:DataSet[@Name=\"SEL_Gebaeude\"]/dft:Query", nsmgr); System.Xml.XmlNode commandtextnode = root.SelectSingleNode("/dft:Report/dft:DataSets/dft:DataSet[@Name=\"SEL_Gebaeude\"]/dft:Query/dft:CommandText", nsmgr); string commandText = commandtextnode.FirstChild.Value; Console.WriteLine(commandText); System.Xml.XmlNodeList AllDatasetParams = root.SelectNodes("/dft:Report/dft:DataSets/dft:DataSet[@Name=\"SEL_Gebaeude\"]/dft:Query/dft:QueryParameters/dft:QueryParameter", nsmgr); Console.WriteLine(AllDatasetParams.Count); Console.WriteLine(" ----------------------------------------- "); foreach (System.Xml.XmlNode DataSetParameter in AllDatasetParams) { string strName = DataSetParameter.Attributes["Name"].Value; string lala = DataSetParameter.FirstChild.FirstChild.Value; Console.WriteLine(lala); Console.WriteLine(strName); } // Next DataSetParameter System.Xml.XmlNode dsn5 = root.SelectSingleNode("/dft:Report/dft:DataSets/dft:DataSet[@Name=\"SEL_Gebaeude\"]/dft:Query/dft:QueryParameters", nsmgr); System.Xml.XmlNode dsn6 = root.SelectSingleNode("/dft:Report/dft:DataSets/dft:DataSet[@Name=\"SEL_Gebaeude\"]/dft:Query/dft:QueryParameters/dft:QueryParameter", nsmgr); System.Xml.XmlNodeList embeddedImages = root.SelectNodes("/dft:Report/dft:EmbeddedImages/dft:EmbeddedImage", nsmgr); System.Xml.XmlNode stao = root.SelectSingleNode("/dft:Report/dft:ReportParameters/dft:ReportParameter[@Name=\"in_standort\"]", nsmgr); if (stao != null) { Console.WriteLine("Has stao"); } Console.WriteLine(stichtag); // /dft:Report/dft:PageHeader/dft:ReportItems/dft:Image/dft:Value[text()="=Convert.FromBase64String(Parameters!def_logo.Value)"] // /dft:Report/dft:PageHeader/dft:ReportItems/dft:Image/dft:Visibility/dft:Hidden[text()="=CBool(Parameters!def_HideLogo.Value)"] // System.Xml.XmlElement newCd = doc.CreateElement("cd"); // newCd.SetAttribute("country", "country.Text"); // newCd.InnerXml = "<title>" + this.comboBox1.Text + "</title>" + "<artist>" + artist.Text + "</artist>" + "<price>" + price.Text + "</price>"; // root.ReplaceChild(newCd, oldCd); //save the output to a file //doc.Save(FILE_NAME); Console.WriteLine(Environment.NewLine); Console.WriteLine(" --- Press any key to continue --- "); Console.ReadKey(); } // End Sub Main