Search code examples
c#xmlwcfstreamreader

How to read SVCLOG files in C#


I need to find the tag <ns2:Response>400 or 200 etc</n2:Response> using service trace viewer it look something like this!!

<SOAP-ENV:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-14799">
    <ns2:SendInvoice xmlns:ns2="http://www.zadrwan.com/services/" xmlns:ns3="http://www.zadrwan.com/services/DocumentSendTo" xmlns:ns4="http://www.zadrwan.com/services/VersionRequest">                            
    <ns2:Response>200</ns2:Response>
    <ns2:Comments>Success!.</ns2:Comments>
    </ns2:SendInvoice>
 </SOAP-ENV:Body>

Or is there another way to get a variable without using an XML reader (to read all the document) or, in this case, a text reader (I'm redesigning a VB project that used a StreamReader)?


Solution

  • There are plenty of ways. Since there is a schema and you can use the xsd.exe tool to get classes I would use code below

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Xml;
    using System.Xml.Serialization;
    namespace ConsoleApplication1
    {
        class Program
        {
            const string FILENAME = @"c:\temp\test.xml";
            static void Main(string[] args)
            {
    
                XmlReader reader = XmlReader.Create(FILENAME);
    
                XmlSerializer serializer = new XmlSerializer(typeof(TimestampType));
                TimestampType timeStamp = (TimestampType)serializer.Deserialize(reader);
            }
        }
        //------------------------------------------------------------------------------
        // <auto-generated>
        //     This code was generated by a tool.
        //     Runtime Version:2.0.50727.6421
        //
        //     Changes to this file may cause incorrect behavior and will be lost if
        //     the code is regenerated.
        // </auto-generated>
        //------------------------------------------------------------------------------
    
        // 
        // This source code was auto-generated by xsd, Version=2.0.50727.3038.
        // 
    
    
        /// <remarks/>
        [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
        [System.SerializableAttribute()]
        [System.Diagnostics.DebuggerStepThroughAttribute()]
        [System.ComponentModel.DesignerCategoryAttribute("code")]
        [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xs" +
            "d")]
        [System.Xml.Serialization.XmlRootAttribute("Timestamp", Namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xs" +
            "d", IsNullable=false)]
        public partial class TimestampType {
    
            private AttributedDateTime createdField;
    
            private AttributedDateTime expiresField;
    
            private System.Xml.XmlElement[] itemsField;
    
            private string idField;
    
            private System.Xml.XmlAttribute[] anyAttrField;
    
            /// <remarks/>
            public AttributedDateTime Created {
                get {
                    return this.createdField;
                }
                set {
                    this.createdField = value;
                }
            }
    
            /// <remarks/>
            public AttributedDateTime Expires {
                get {
                    return this.expiresField;
                }
                set {
                    this.expiresField = value;
                }
            }
    
            /// <remarks/>
            [System.Xml.Serialization.XmlAnyElementAttribute()]
            public System.Xml.XmlElement[] Items {
                get {
                    return this.itemsField;
                }
                set {
                    this.itemsField = value;
                }
            }
    
            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, DataType="ID")]
            public string Id {
                get {
                    return this.idField;
                }
                set {
                    this.idField = value;
                }
            }
    
            /// <remarks/>
            [System.Xml.Serialization.XmlAnyAttributeAttribute()]
            public System.Xml.XmlAttribute[] AnyAttr {
                get {
                    return this.anyAttrField;
                }
                set {
                    this.anyAttrField = value;
                }
            }
        }
    
        /// <remarks/>
        [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
        [System.SerializableAttribute()]
        [System.Diagnostics.DebuggerStepThroughAttribute()]
        [System.ComponentModel.DesignerCategoryAttribute("code")]
        [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xs" +
            "d")]
        [System.Xml.Serialization.XmlRootAttribute("Expires", Namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xs" +
            "d", IsNullable=false)]
        public partial class AttributedDateTime {
    
            private string idField;
    
            private System.Xml.XmlAttribute[] anyAttrField;
    
            private string valueField;
    
            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute(Form=System.Xml.Schema.XmlSchemaForm.Qualified, DataType="ID")]
            public string Id {
                get {
                    return this.idField;
                }
                set {
                    this.idField = value;
                }
            }
    
            /// <remarks/>
            [System.Xml.Serialization.XmlAnyAttributeAttribute()]
            public System.Xml.XmlAttribute[] AnyAttr {
                get {
                    return this.anyAttrField;
                }
                set {
                    this.anyAttrField = value;
                }
            }
    
            /// <remarks/>
            [System.Xml.Serialization.XmlTextAttribute()]
            public string Value {
                get {
                    return this.valueField;
                }
                set {
                    this.valueField = value;
                }
            }
        }
    
    
    }