Top 10 reads of July 2015

These are our Top 10 reads of July 2015.

  • How to match strings using wildcards in C# and VB.NET
  • IsSmallerThan generic extension method for C# and VB.NET
  • How to prevent your IOS app from going into sleeping mode using Objective-C
  • How to convert Color to Hex and Hex to Color using C# and VB.NET
  • How to read a embedded resource to String in C# and VB.NET
  • How to convert a Securestring to String using C# and VB.NET
  • How to change the encoding of a String using C# and VB.NET
  • How to get focusedrow cell value using Devexpress XtraGrid in C# and VB.NET
  • How to get the selected row index in Devexpress Xtragrid Control using C# and VB.NET
  • thanks to all visitors, bookmark us, share us, talk about us, Follow us!, Like us! let’s grow bigger! You can even participate in our Github Projects!

    Please rate this snippet

    How to XSL transform a XDocument in C# and VB.NET with custom namespaces

    This snippet will help you to xsl transform xml files with custom namespaces. A Basic snippet which does only work without custom namespaces can be found HERE. The snippet will return a path to a temporary file (transformed xml).

    Sample C#

    private static string TransformXDocument(string inputXml, string xslFile)
            {
                try
                {
                    var xslt = new XslCompiledTransform();
                    xslt.Load(xslFile);
                    string tempFile = string.Empty;
                    using (var sr = new StreamReader(inputXml, Encoding.Default))
                    {
                        var xDoc = XDocument.Load(xslFile);
                        if (xDoc.Root != null)
                        {
                            var result = xDoc.Root.Attributes().Where(a => a.IsNamespaceDeclaration).GroupBy(a => a.Name.Namespace == XNamespace.None ? String.Empty : a.Name.LocalName, a => XNamespace.Get(a.Value)).ToDictionary(g => g.Key,g => g.First());
                            var nt = new NameTable();
                            var mgr = new XmlNamespaceManager(nt);
                            foreach (var ns in result.Where(ns => ns.Key != "xsl" && ns.Value != "http://www.w3.org/1999/XSL/Transform"))
                            {
                                mgr.AddNamespace(ns.Key, ns.Value.ToString());
                            }
                            var xpc = new XmlParserContext(nt, mgr, "", XmlSpace.Default);
                            var rds = new XmlReaderSettings {ConformanceLevel = ConformanceLevel.Document};
                            using (var rd = XmlReader.Create(sr, rds, xpc))
                            {
                                tempFile = Path.GetTempFileName();
                                using (var wr = new StreamWriter(tempFile))
                                {
                                    xslt.Transform(rd, new XsltArgumentList(), wr);
                                    wr.Flush();
                                    wr.Close();
                                }
                                rd.Close();
                            }
                        }
                    }
                    return tempFile;
    
                }
                catch (Exception ex)
                {
                    //handle the exception your way
                    return string.Empty;
                }
            }
    

    Sample VB.NET

    Private Shared Function TransformXDocument(inputXml As String, xslFile As String) As String
    	Try
    		Dim xslt = New XslCompiledTransform()
    		xslt.Load(xslFile)
    		Dim tempFile As String = String.Empty
    		Using sr = New StreamReader(inputXml, Encoding.Default)
    			Dim xDoc = XDocument.Load(xslFile)
    			If xDoc.Root IsNot Nothing Then
    				Dim result = xDoc.Root.Attributes().Where(Function(a) a.IsNamespaceDeclaration).GroupBy(Function(a) If(a.Name.[Namespace] = XNamespace.None, [String].Empty, a.Name.LocalName), Function(a) XNamespace.[Get](a.Value)).ToDictionary(Function(g) g.Key, Function(g) g.First())
    				Dim nt = New NameTable()
    				Dim mgr = New XmlNamespaceManager(nt)
    				For Each ns As var In result.Where(Function(ns) ns.Key <> "xsl" AndAlso ns.Value <> "http://www.w3.org/1999/XSL/Transform")
    					mgr.AddNamespace(ns.Key, ns.Value.ToString())
    				Next
    				Dim xpc = New XmlParserContext(nt, mgr, "", XmlSpace.[Default])
    				Dim rds = New XmlReaderSettings() With { _
    					Key .ConformanceLevel = ConformanceLevel.Document _
    				}
    				Using rd = XmlReader.Create(sr, rds, xpc)
    					tempFile = Path.GetTempFileName()
    					Using wr = New StreamWriter(tempFile)
    						xslt.Transform(rd, New XsltArgumentList(), wr)
    						wr.Flush()
    						wr.Close()
    					End Using
    					rd.Close()
    				End Using
    			End If
    		End Using
    
    		Return tempFile
    	Catch ex As Exception
    		'handle the exception your way
    		Return String.Empty
    	End Try
    End Function
    

    Please rate this snippet

    How to use a counter in a XSL Loop (xsl:for-each)

    To use a counter in a XSL For-Each block, you can use the position() function, the Counter starts at value 1.

    Sample XSL

    <xsl:for-each select="Order/Products/Product">
        <position><xsl:value-of select="position()"></xsl:value-of></position>
    </xsl:for-each>
    

    see also MSDN position Function

    Please rate this snippet

    Simple Type Percent for XSD Files

    To use the simply type percent (xs:decimal), see the snippet below.

    <xs:simpleType name="percent">
      <xs:annotation>
        <xs:documentation>The percent type specifies a value from 0 to 100.</xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:decimal">
        <xs:minInclusive value="0"/>
        <xs:maxInclusive value="100"/>
      </xs:restriction>
    </xs:simpleType>
    

    Please rate this snippet

    How to validate XDocument with xsd file in C# and VB.NET

    To validate xml file with xsd file in C# and VB.NET you can use the following snippet.

    Sample C#

    public string ValidateXDocument(XDocument xmlFile, string xsdFile)
    {
    	try
    	{
    		var retVal = String.Empty;
    		var schemas = new XmlSchemaSet();
    		schemas.Add(null, xsdFile);
    		xmlFile.Validate(schemas, (o, e) =>
    		{
    			retVal = e.Message;
    		});
    		return retVal;
    	}
    	catch (Exception ex)
    	{
    		//handle the exception your way
    		return ex.ToString();
    	}
    }
    

    Sample VB.NET

    Public Function ValidateXDocument(xmlFile As XDocument, xsdFile As String) As String
    	Try
    		Dim retVal = [String].Empty
    		Dim schemas = New XmlSchemaSet()
    		schemas.Add(Nothing, xsdFile)
    		xmlFile.Validate(schemas, Function(o, e) 
    		retVal = e.Message
    
    End Function)
    		Return retVal
    	Catch ex As Exception
    		'handle the exception your way
    		Return ex.ToString()
    	End Try
    End Function
    

    Please rate this snippet