@Deserialization Error Inner Exception 1: InvalidOperationException: <configuration xmlns=''> was not expected. C#

0

Has anyone encountered a deserialization Error

Inner Exception 1:InvalidOperationException: <configuration xmlns=''> was not expected
System.InvalidOperationException occurred
HResult=0x80131509
Message=There is an error in XML document (2, 2).
StackTrace:
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
at System.Xml.Serialization.XmlSerializer.Deserialize(TextReader textReader)

in C# when opening and deserializing an XML file? This is when using System.Xml.Serialization and the following code:

var serializer = new XmlSerializer(typeof(ExtractorTask));
using (var reader = System.IO.File.OpenText(args[0]))
  {
    extractorTask = (ExtractorTask)serializer.Deserialize(reader);
  }

This very same XML can be traversed using System.Xml.Linq.

var doc = XDocument.Load(configFilePath);

Here is the top portion of the XML file:

<?xml version="1.0" encoding="utf-8"?>
<configuration LoaderConfig="disc42_loader_config_2014" Disc_Source="BigFix Inventory" >
<Custom Type="Pass-Through" Name="MU_HOST" Dynamic_subtype="Machine" Label="ILMT Server Details">
        <Fields>
        <Field Name="MachineID" DataType="NVARCHAR(255)" Nullable="1" DefaultValue="" Comment="" Key_Position="1" FileColumnName="Key-MachineID:MachineID" />
        </Fields>
</Custom>

I have looked over posts ... some people suggest adding namespace to XML file but still get the same error when using System.Xml.Serialization;. Others suggested programatically adding a root node to the XML tree. That didn't work either. I would like to avoid having to rewrite code that uses system.Xml.Serialization methods.

Thanks for your help!

Follow Up:

I added ROOT following this example:

XmlRootAttribute xRoot = new XmlRootAttribute();
xRoot.ElementName = "user";
// xRoot.Namespace = "http://www.cpandl.com";
xRoot.IsNullable = true;
XmlSerializer xs = new XmlSerializer(typeof(User),xRoot)

But it didn't work.

ExtractorTask Class:

using System;
using System.IO;
using System.Text.RegularExpressions;

using System.Xml.Serialization;
namespace bdna.Extractor.DTO
public class ExtractorTask : ConfigObj
{
[XmlElement]
public ZipOutputRule ZipOutputRule { get; set; }
[XmlElement]
public SchemaRule SchemaRule { get; set; }
[XmlElement]
public DBAction DBAction { get; set; }
[XmlElement]
public FTPAction FTPAction { get; set; }
[XmlElement]
public XSFAction XSFAction { get; set; }
[XmlElement]
public RESTfulAPIAction RESTfulAPIAction { get; set; }
[XmlElement]
public ILMTRESTfulAPIAction ILMTRESTfulAPIAction { get; set; }
public TemplateAction TemplateAction { get; set; }

public ExtractorTask()
{
  ZipOutputRule = new ZipOutputRule();
  SchemaRule = new SchemaRule();
  DBAction = new DBAction();
  FTPAction = new FTPAction();
  XSFAction = new XSFAction();
  RESTfulAPIAction = new RESTfulAPIAction();
  TemplateAction = new TemplateAction();
  //cluster actions disabled by default
  this.DeepDisable();
}
}
}

Complete XML File:

      <?xml version="1.0" encoding="utf-8"?>
  <configuration LoaderConfig="disc42_loader_config_2014" Disc_Source="BigFix Inventory" >

  <Custom Type="Pass-Through" Name="MU_HOST" Dynamic_subtype="Machine" Label="ILMT Server Details">
          <Fields>
          <Field Name="MachineID" DataType="NVARCHAR(255)" Nullable="1" DefaultValue="" Comment="" Key_Position="1" FileColumnName="Key-MachineID:MachineID" />
          <Field Name="DataSource" DataType="NVARCHAR(255)" Nullable="1" DefaultValue="" Comment="" Key_Position="0" FileColumnName="DataSourceName" />
          <Field Name="ServerID" DataType="NVARCHAR(255)"   Nullable="1" DefaultValue="" Comment="" Key_Position="0" FileColumnName="ServerID" />
          <Field Name="PartitionCores" DataType="NVARCHAR(255)" Nullable="1" DefaultValue="" Comment="" Key_Position="0" FileColumnName="PartitionCores" />
          <Field Name="ClusterName" DataType="NVARCHAR(255)" Nullable="1" DefaultValue="" Comment="" Key_Position="0" FileColumnName="ClusterName" />
          <Field Name="ClusterID" DataType="NVARCHAR(255)" Nullable="1" DefaultValue="" Comment="" Key_Position="0" FileColumnName="ClusterID" />
          <Field Name="ServerCores" DataType="NVARCHAR(255)" Nullable="1" DefaultValue="" Comment="" Key_Position="0" FileColumnName="ServerCores" />
          <Field Name="PVUPerCore" DataType="NVARCHAR(255)" Nullable="1" DefaultValue="" Comment="" Key_Position="0" FileColumnName="PVUPerCore" />
          </Fields>
  </Custom>

  <Custom Type="Pass-Through_A">
          <Fields>
          <Field Name="DiscoveryStart" DataType="NVARCHAR(255)" Nullable="1" DefaultValue="" /> 
          <Field Name="DiscoveryEnd"   DataType="NVARCHAR(255)" Nullable="1" DefaultValue="" /> 
          <Field Name="ProductName"    DataType="NVARCHAR(255)" Nullable="1" DefaultValue="" /> 
          <Field Name="Charged"        DataType="NVARCHAR(255)" Nullable="1" DefaultValue="" /> 
          <Field Name="Excluded"       DataType="NVARCHAR(255)" Nullable="1" DefaultValue="" />
      </Fields>
  </Custom>

  <Authentication>
          <Field Name="Basic" Source="/api/get_token" Key="token" TimeOut="1000000" Destination=""/>
  </Authentication> 

  <Tables>
       <Table>
           <Name>System</Name>
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=host_name&amp;columns[]=dns_name" Key="computer_id" Destination="ResourceID" />
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=host_name&amp;columns[]=dns_name" Key="host_name"   Destination="Name" />
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=host_name&amp;columns[]=dns_name" Key="dns_name"    Destination="Domain" />
        </Table>
        <Table>
           <Name>Pass-Through_A</Name>
           <Field Source="/api/sam/software_instances?token={$}&amp;columns[]=computer_id&amp;columns[]=valid_from&amp;columns[]=valid_to&amp;columns[]=catalog_dimension.software_title_name&amp;columns[]=catalog_dimension.publisher_name&amp;columns[]=catalog_dimension.version&amp;columns[]=discoverable_guid" Key="computer_id"          Destination="ResourceID" />
           <Field Source="/api/sam/extended_software_facts?token={$}&amp;columns[]=computer_id&amp;columns[]=software_title_name&amp;columns[]=is_charged&amp;columns[]=is_excluded&amp;columns[]=discoverable_guid&amp;columns[]=component_id&amp;columns[]=is_current&amp;criteria={&quot;and&quot;:[[&quot;is_current&quot;,&quot;=&quot;,&quot;1&quot;]]}"     Key="component_id"         Destination="ProdID" />
           <Field Source="/api/sam/software_instances?token={$}&amp;columns[]=computer_id&amp;columns[]=valid_from&amp;columns[]=valid_to&amp;columns[]=catalog_dimension.software_title_name&amp;columns[]=catalog_dimension.publisher_name&amp;columns[]=catalog_dimension.version&amp;columns[]=discoverable_guid" Key="catalog_dimension"    Destination="DisplayName" />
           <Field Source="/api/sam/software_instances?token={$}&amp;columns[]=computer_id&amp;columns[]=valid_from&amp;columns[]=valid_to&amp;columns[]=catalog_dimension.software_title_name&amp;columns[]=catalog_dimension.publisher_name&amp;columns[]=catalog_dimension.version&amp;columns[]=discoverable_guid" Key="catalog_dimension"    Destination="Publisher" />
           <Field Source="/api/sam/software_instances?token={$}&amp;columns[]=computer_id&amp;columns[]=valid_from&amp;columns[]=valid_to&amp;columns[]=catalog_dimension.software_title_name&amp;columns[]=catalog_dimension.publisher_name&amp;columns[]=catalog_dimension.version&amp;columns[]=discoverable_guid" Key="catalog_dimension"    Destination="Version" />
           <Field Source="/api/sam/software_instances?token={$}&amp;columns[]=computer_id&amp;columns[]=valid_from&amp;columns[]=valid_to&amp;columns[]=catalog_dimension.software_title_name&amp;columns[]=catalog_dimension.publisher_name&amp;columns[]=catalog_dimension.version&amp;columns[]=discoverable_guid" Key="valid_from"           Destination="DiscoveryStart" />
           <Field Source="/api/sam/software_instances?token={$}&amp;columns[]=computer_id&amp;columns[]=valid_from&amp;columns[]=valid_to&amp;columns[]=catalog_dimension.software_title_name&amp;columns[]=catalog_dimension.publisher_name&amp;columns[]=catalog_dimension.version&amp;columns[]=discoverable_guid" Key="valid_to"             Destination="DiscoveryEnd" />
           <Field Source="/api/sam/extended_software_facts?token={$}&amp;columns[]=computer_id&amp;columns[]=software_title_name&amp;columns[]=is_charged&amp;columns[]=is_excluded&amp;columns[]=discoverable_guid&amp;columns[]=component_id&amp;columns[]=is_current&amp;criteria={&quot;and&quot;:[[&quot;is_current&quot;,&quot;=&quot;,&quot;1&quot;]]}"     Key="software_title_name"  Destination="ProductName" />
           <Field Source="/api/sam/extended_software_facts?token={$}&amp;columns[]=computer_id&amp;columns[]=software_title_name&amp;columns[]=is_charged&amp;columns[]=is_excluded&amp;columns[]=discoverable_guid&amp;columns[]=component_id&amp;columns[]=is_current&amp;criteria={&quot;and&quot;:[[&quot;is_current&quot;,&quot;=&quot;,&quot;1&quot;]]}"     Key="is_charged"           Destination="Charged" />
           <Field Source="/api/sam/extended_software_facts?token={$}&amp;columns[]=computer_id&amp;columns[]=software_title_name&amp;columns[]=is_charged&amp;columns[]=is_excluded&amp;columns[]=discoverable_guid&amp;columns[]=component_id&amp;columns[]=is_current&amp;criteria={&quot;and&quot;:[[&quot;is_current&quot;,&quot;=&quot;,&quot;1&quot;]]}"     Key="is_excluded"          Destination="Excluded" />
      </Table>
        <Table>
           <Name>GS_OPERATING_SYSTEM</Name>
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=os" Key="computer_id" Destination="ResourceID" />
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=os" Key="os"          Destination="Caption0" />
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=os" Key="os"          Destination="Name0" />
        </Table>
        <Table>
           <Name>GS_PROCESSOR</Name>
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=processor_vendor&amp;columns[]=processor_brand_string" Key="computer_id"             Destination="ResourceID" />
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=processor_vendor&amp;columns[]=processor_brand_string" Key="processor_vendor"        Destination="Manufacturer0" />
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=processor_vendor&amp;columns[]=processor_brand_string" Key="processor_brand_string"  Destination="Name0" />
        </Table>
        <Table>
           <Name>GS_COMPUTER_SYSTEM</Name>
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=hardware_manufacturer&amp;columns[]=hardware_model&amp;columns[]=server_processors" Key="computer_id"               Destination="ResourceID" />
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=hardware_manufacturer&amp;columns[]=hardware_model&amp;columns[]=server_processors" Key="hardware_manufacturer"     Destination="Manufacturer0" />
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=hardware_manufacturer&amp;columns[]=hardware_model&amp;columns[]=server_processors" Key="hardware_model"            Destination="Model0" />
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=hardware_manufacturer&amp;columns[]=hardware_model&amp;columns[]=server_processors" Key="server_processors"         Destination="NumberofProcessors0" />
        </Table>
        <Table>
           <Name>GS_WORKSTATION_STATUS</Name>
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=last_seen" Key="computer_id"   Destination="ResourceID" />
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=last_seen" Key="last_seen"     Destination="LastHWScan" />
        </Table>
        <Table>
           <Name>GS_PC_BIOS</Name>
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=hardware_manufacturer&amp;columns[]=hardware_serial_number" Key="computer_id"               Destination="ResourceID" />
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=hardware_manufacturer&amp;columns[]=hardware_serial_number" Key="hardware_manufacturer"     Destination="Manufacturer0" />
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=hardware_manufacturer&amp;columns[]=hardware_serial_number" Key="hardware_serial_number"    Destination="SerialNumber0" />
        </Table>
        <Table> 
           <Name>Pass-Through</Name>
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=datasource_name&amp;columns[]=server_id&amp;columns[]=partition_cores&amp;columns[]=cluster_id&amp;columns[]=server_cores&amp;columns[]=pvu_per_core" Key="computer_id"         Destination="Key-MachineID:MachineID" />
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=datasource_name&amp;columns[]=server_id&amp;columns[]=partition_cores&amp;columns[]=cluster_id&amp;columns[]=server_cores&amp;columns[]=pvu_per_core" Key="datasource_name"     Destination="DataSourceName" />
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=datasource_name&amp;columns[]=server_id&amp;columns[]=partition_cores&amp;columns[]=cluster_id&amp;columns[]=server_cores&amp;columns[]=pvu_per_core" Key="server_id"           Destination="ServerID" />
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=datasource_name&amp;columns[]=server_id&amp;columns[]=partition_cores&amp;columns[]=cluster_id&amp;columns[]=server_cores&amp;columns[]=pvu_per_core" Key="partition_cores"     Destination="PartitionCores" />
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=datasource_name&amp;columns[]=server_id&amp;columns[]=partition_cores&amp;columns[]=cluster_id&amp;columns[]=server_cores&amp;columns[]=pvu_per_core" Key="cluster_id"          Destination="ClusterID" />
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=datasource_name&amp;columns[]=server_id&amp;columns[]=partition_cores&amp;columns[]=cluster_id&amp;columns[]=server_cores&amp;columns[]=pvu_per_core" Key="server_cores"        Destination="ServerCores" />
           <Field Source="/api/sam/computer_systems?token={$}&amp;columns[]=computer_id&amp;columns[]=datasource_name&amp;columns[]=server_id&amp;columns[]=partition_cores&amp;columns[]=cluster_id&amp;columns[]=server_cores&amp;columns[]=pvu_per_core" Key="pvu_per_core"        Destination="PVUPerCore" />
        </Table>
        <Table>
        <Name>AddRemove</Name>
        <Field Source="/api/sam/packages.json?token={$}&amp;columns[]=computer_id&amp;columns[]=version&amp;columns[]=name&amp;columns[]=vendor" Key="computer_id" Destination="ResourceID" />
        <Field Source="/api/sam/packages.json?token={$}&amp;columns[]=computer_id&amp;columns[]=version&amp;columns[]=name&amp;columns[]=vendor" Key="name" Destination="DisplayName" />
        <Field Source="/api/sam/packages.json?token={$}&amp;columns[]=computer_id&amp;columns[]=version&amp;columns[]=name&amp;columns[]=vendor" Key="vendor" Destination="Publisher" />
        <Field Source="/api/sam/packages.json?token={$}&amp;columns[]=computer_id&amp;columns[]=version&amp;columns[]=name&amp;columns[]=vendor" Key="version" Destination="Version" />
      </Table>


  </Tables>
  </configuration>

@ProgMan - Here is the ConfigObj abstract class:

using System.Xml.Serialization;
using bdna.Extractor.I18N;

namespace bdna.Extractor.DTO
{
public abstract class ConfigObj
{
[XmlAttribute]
public string Enabled;

[XmlIgnore]
public bool IsEnabled
{
  get { return string.IsNullOrEmpty(Enabled) || Enabled=="1"; }
  set { Enabled = value?"1":"0"; }
}

public void DeepCopyEnableValue()
{
  foreach (var prop in this.GetType().GetProperties().Where(p => 
  p.PropertyType.IsSubclassOf(typeof(ConfigObj))))
  {
    var enableable = (ConfigObj)new 
    bdna.Extractor.Util.GeneralResAdapter.FastProperty(prop).Get(this);
    if (enableable==null)
    {
      continue;
    }

    enableable.IsEnabled = IsEnabled;
    enableable.DeepCopyEnableValue();
  }
}

public void DeepDisable()
{
  this.IsEnabled = false;
  this.DeepCopyEnableValue();
}
}
}
c#
xml
deserialization
asked on Stack Overflow Jan 24, 2019 by NBessmer • edited Jan 28, 2019 by NBessmer

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0