Click here to Skip to main content
15,886,110 members
Articles / Programming Languages / C#

Harvesting Web Content into MHTML Archive

Rate me:
Please Sign up or sign in to vote.
4.69/5 (14 votes)
18 Feb 20068 min read 61.7K   729   49  
Capture and archive web resources by saving them in RFC-2557 (MHTML) compliant format. This library includes a framework for augmenting the capture process and allowing programmatic control, from downloading through saving. A replacement for CDOSYS/CDONTS.
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="mainMenu1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <metadata name="imageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>126, 17</value>
  </metadata>
  <data name="imageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABe
        EQAAAk1TRnQBSQFMAgEBCAEAAQkBAAEEAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
        AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
        AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
        AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
        AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
        AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
        AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
        ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
        AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
        AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
        AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
        AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
        AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
        AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
        AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
        AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
        ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
        Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
        AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
        AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
        AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
        ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
        Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
        AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
        AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
        AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
        AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
        AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
        AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/wD/AP8AFAAE9AHz
        AfAKvAHwE/8B9wRmARMBFARmARMB/wHsAf8B9AH/AfQB/wH0Af8B9AH/AfQB/wH0Af8BAAP0AfEBrgKG
        AksHbQHtBP8B9wEUAmYBEwEUARMBFAETARIBFAETA/8B7wEZAbUB3QEJAbsCCQG1AbsBtQFmAf8B7AL/
        AfQB/wH0Af8B9AH/AfQB/wH0Af8B9AEAAvQB8QGGAccCpwJZATEBbQWuAW0C9gL/AZIB/wG1AZIB9wS1
        AvcBbAL/AfQB7QL0AfEBGQHzARkB3QGzAYsBtQFsAf8B7AH/AfQJiwH0Af8BAAL0Ac8BxwGtAdYB8AGa
        AXoBWQExAbQB3AEZAQkBrgFtA/8B9gEcAfYB9AL2AfQDGQEJAbUBZgP/AfcB8wH3A/IB8AEZArQBtQEU
        Af8B7AL/AfQB/wH0Af8B9AH/AfQB/wH0Af8B9AEAAfQBvAKtAQkBkgHwAf8B9gF6AVkBUQHbARkBCQGu
        AW0BGgHrB0oBGwH/Ad0B8wG8AbUBZgHzAW4BRAGTAv8B7QE+AQEBZwIZAd0BCQETAfQB7AH/AfQJiwH0
        Af8BAAH0AbUBzQHbAfQBQwEPAewB8QH2AVkBUgHbARkBCQGuAW0BSwGZAZoBoAMaAW4BdAFLAfMB/wLw
        AbUBZgH/ARsBPgEHAf8BvAEaAQEBHgHyAfMCRgEHAWYB9gHsAv8B9AH/AfQB/wH0Af8B9AH/AfQB/wH0
        AQAB9AH3Aa0B2wH0AW0BEAEAAW0B9AFZAVIB2wEZAQkBrgFtAnMGUQF0AXMD8wHxAfcBZgL/AW8BRAJu
        AUUBAQFvAfQB8QJvAQcBbAH/AewB/wH0AQkB9AH/AwQB/wH0AQkB9AH/AQAB9AGUASYBdQH0AW0B6wGS
        AfQBmQEvAUkB2wEZAQkBrgFtAf8B9gEcAZkCeQF6AVgBUQFzAf8C9AHyAfcBbAH/AfYBkwE+ARoBkwEe
        AQEBvQEZAeICGQG8AWwB/wHsAf8BCQGFAf8BzgHUAS4B/AEEAf8BhQEJAfQBAAH0AfMBTQHjAZQB7QHx
        AfQBCAFQASkBbQHbARkBCQGuAW0B/wEaAUsBmgF6AXkBegFLARwB9gL/AvMB9wFmAv8B9AEeARoBkwEB
        AW4B9AH/ARkCUAG7AWwB/wHsAQkBhQH/AfQBBgHfAdoBLgEEAfQB/wGFAQkBAAH0Af8BlAFNAXUBlAGZ
        AXgBNQEvAUoBuwEJAfQB3QGuAW0B/wJzA5oBeQFLAcMB9gL/AvQB9wFmA/8BbgGTAUQBPgG8Af8B9AH/
        AXIBUAHxAWYB/wHsAf8BCQGFAf8BBgH/Ad8B1AEEAf8BhQEJAfQBAAL0Af8BlAFNAkcBNQEvAVABuwHc
        AvQB3QGuAW0B9gFzAcMBoAKaAUsBdAFLAUoB9gL/AfQBtQFmA/8BBwE+AQEBbgP/AfQC8wHwARMB/wHs
        Af8B9AEJAfQB/wIGAc4B/wH0AQkB9AH/AQAD9AH/AQkClAF4Ae8BCQEZA/8B3QGuAewB9gFKBMMBSgF0
        AZkBSgH2AfQB/wH3AbUBZgP/AQcBRAE+AQcE/wH3ARIBFAESAf8B7AL/AfQB/wH0Af8B9AH/AfQB/wQA
        BPQB3Af/A64BkQEHAf8B9gQcAXMCSgHDAfYB/wH3A2YD/wHvARoBbgHwAf8B9wH/AfcBtQEJARMB7wH/
        AewH/wH0Af8B9AEHAf8B7AX0AdwH/wGuAd0BswEHAfMB/wP2AQcB9AH/BPYB/wH3AQkBEwHwAfQC/wG8
        B/8BtQFmAe8C/wHsCv8BBwHsBvQB3Af/ArQBBwHzAfQD/wH0AbwH/wG1ARMB8AT/AbsBBwK8BAcB7wG8
        A/8M7Af0CLUBtAHwAfMC9AT/AQkBuwIHAQkCBwHvAbsB3QH/AvYK/wL2Av8B9gH/AfIB8QG8AvcB7wHw
        AfMD8gHzAfQT/wG8Ae0B6whtAesB7QG8Bf8M7QHvAUkB6gRPAeoB7AJyAeoBbQGSAfES/wGuC7UB6wHv
        BP8MrgHtAVYDVQFPAe0B7wGXAU8BVQFPAVUBTwFJAZIB9AL/DUsC/wG0AfEFGQMJAdwBCQFtAe8C/wEJ
        AboBtAHdAwkC3QMZAQkBrgHtAZgBVQJPAeoBBwHwBZcBUAFPAW0B8gH/DlIBSwH/AbQB8QEZBQkD3AEJ
        AW0B7wH/AdsBtQH/AbMBiwNmAYsBuwLdARkBCQGuAu0BcgFPAW0B7AG8AfIB7ANyAbwCTwFJAfEBUgF6
        AVIBoAh6AVgBoAFSAUsB/wG0AfICtQLtAfcBmQF5AfcBtAEJAW0B7wH/AbMBtQHvAYsD1ALbAWYBuwIZ
        AQkBrgHtAQgB7QFyAZIB7AHyAfQBkgHsAe0B7AHwAewBcgEHAfQBUgF6AVIBoAh6AVgBoAFSAUsB/wG0
        AfIB9wGNAc8B7QGZApoBHAG0AQkBbQHvAf8CswGtAtQBrQEJA7MBiwEJARkBCQGuAe0B/wHvAe0B7AHt
        AfEB/wEHAZIB9wHsAfMB7QHwAv8BUgF6AVIBoAeaAaABWAGgAVIBSwH/AbUB8wGTAXQBEwJ0AZkBegF0
        AbQBCQFtAe8B/wG7AdsB1AGzAYsBCQUZAQkBGQEJAa4B7QH/AQcB7AESAewBvAHzAfQB7wHtAe8B/wGS
        AbwC/wFSAXoBUgmgAXkBoAFSAUsB/wG1AfQBdAFvAUQCdAJ6AXQBtQEJAW0B7wL/AbQB2gGzB4sBCQEZ
        AQkBrgHtAfQB6wESASoBUgFzAbwC/wHyAv8C7wL/AVIBegFSCaABegGgAVIBSwH/AbUB9AF0AksCUwF6
        AlMBtQEJAW0B7wH/AbQB/wG0AdoCswG0AbMC1AGLAQkBGQEJAa4B7QHvAUQBKgErAVIBeQF0AQcE/wG8
        AW0B9wHxAVIBegFSAf8F9gP/AZoB9gFSAUsB/wG1AfQBRgFEASUCRgJNAUYBtQHdAW0B7wH/AfQBtAH/
        AbQBiwEJAf8BrQHUAbMBtAEZAfQB3QGuAe0BcwErAjEBKwFSAXoBdAHvAv8B8gGSAUsBSgHvAVIBoAGa
        DFIC/wG1AfQBdQFMAU0BUwF6AZoBegF1AbUB3QFtAe8C/wG7AbQBGQSzAdQBkAH/AvQB3QGuAe0BHAFZ
        ATIBdAFSAisBegGZAQcBvAFzAlIBHAHzAVIGoAX/ASoE/wG1Af8BdQJNAVMBdQF6AfQCGQHdAesBBwP/
        AbsBtAHhAegC2gG0Af8BugHzAf8B3QGuAe0B/wEbARwCBwExASsBKgF6AXQBSwFTAXQB8AL/AVIB/wSg
        Af8FUgEqBP8BtQb/AfQC3QEJAbQBkgHwBP8BtQW0Af8B2gOuAZEB7QL/Ae0B8QGZAVMBKwEqAUsBdQFM
        ARwF/wFSA/8B9gFSCv8BtQf/AtQBswHsAQcB8wT/AbUC/wH0AQkCuwEJAbQB3QGzAQcB9AH/AQcB7AHx
        AZIBdAFSASsBSwGTAfIH/wRSC/8BtQf/AbUB2wGuAe8B8QH0BP8BtQf/ArQBBwH0Av8B9AEHAfcBBwG8
        AXQBmQHzGP8JtQHzBPQE/wi1AbQB8QH0Av8BQgFNAT4HAAE+AwABKAMAAUADAAEwAwABAQEAAQEFAAGA
        AQEWAAP//wCCAAs=
</value>
  </data>
</root>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Software Developer (Senior)
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions