} // End Function GetParameterDefaultValue public static string GetParameterDefaultValue(System.Xml.XmlDocument doc, string strParameterName) { strParameterName = XmlTools.XmlEscape(strParameterName); System.Xml.XmlNamespaceManager nsmgr = GetReportNamespaceManager(doc); System.Xml.XmlNode xnParam = doc.SelectSingleNode("/dft:Report/dft:ReportParameters/dft:ReportParameter[@Name=\"" + strParameterName + "\"]/dft:DefaultValue/dft:Values/dft:Value", nsmgr); if (xnParam != null) { return(xnParam.InnerText); } return(null); } // End Function GetParameterDefaultValue
} // End Sub AddOrReplaceParameter public static void AddCustomParameter(string strFilename, System.Xml.XmlNode xnInsertHere, bool bFirst, bool bLast, string strXmlFragment) { string strReportName = System.IO.Path.GetFileNameWithoutExtension(strFilename); if (xnInsertHere != null) { Logging.LogMessage("{0}\t{1}", strReportName, "hasParameters"); System.Xml.XmlDocument doc = xnInsertHere.OwnerDocument; System.Xml.XmlDocumentFragment xmlDocFrag = doc.CreateDocumentFragment(); xmlDocFrag.InnerXml = strXmlFragment; bool bDoNotFechParameter = bFirst || bLast; if (bDoNotFechParameter) { if (bFirst) { xnInsertHere.PrependChild(xmlDocFrag); } else { xnInsertHere.AppendChild(xmlDocFrag); } } else { if (StringComparer.InvariantCultureIgnoreCase.Equals(xnInsertHere.LocalName, "ReportParameters")) { xnInsertHere.AppendChild(xmlDocFrag); } else { xnInsertHere.ParentNode.InsertAfter(xmlDocFrag, xnInsertHere); } } // End else of if (bDoNotFechParameter) XmlTools.SaveDocument(doc, strFilename, true); } // End if (xn else { Logging.LogMessage("{0}\tKeine Parameter in Report.", strReportName); } } // End Sub AddCustomParameter
} // 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
} // End Function GetDataSetDefinition public static void AddMainParametersNode(string strFilename) { if (HasParameters(strFilename)) { return; } System.Xml.XmlNode xnDataSets = GetDataSetsNode(strFilename); if (xnDataSets == null) { return; } System.Xml.XmlDocument doc = xnDataSets.OwnerDocument; System.Xml.XmlDocumentFragment xmlDocFrag = doc.CreateDocumentFragment(); xmlDocFrag.InnerXml = "<ReportParameters></ReportParameters>"; xnDataSets.ParentNode.InsertAfter(xmlDocFrag, xnDataSets); XmlTools.SaveDocument(doc, strFilename, true); }
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