ОБНОВЛЕНИЕ 1 Проблема заключается не в множественном пространстве имен. я не знаю, почему, но если создать объект из созданного класса, назначенное поле Подписи вручную и сериализовать объект, пространство имен узла Подписи узла является:Xml десериализация C# с кратными пространствами имен
<Signature xmlns="http://www.abrasf.org.br/nfse.xsd">
вместо
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
Если я назначить сертификат XML usign, пространство имен сигнатура
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
с первого пространства имен, я могу deseralizate без проблем, но мне нужно знак.
Generated Class from wsdl using wsdl.exe
EnviarLoteRpsEnvio из nfse.xsd
EnviarLoteRpsEnvio класс:
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.17929")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://www.abrasf.org.br/nfse.xsd")]
public partial class EnviarLoteRpsEnvio
{
private tcLoteRps loteRpsField;
private SignatureType signatureField;
/// <remarks/>
public tcLoteRps LoteRps
{
get { return this.loteRpsField; }
set { this.loteRpsField = value; }
}
/// <remarks/>
public SignatureType Signature
{
get { return this.signatureField; }
set { this.signatureField = value; }
}
}
SignatureTypeClass:
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.17929")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.w3.org/2000/09/xmldsig#")]
public partial class SignatureType {
private SignedInfoType signedInfoField;
private SignatureValueType signatureValueField;
private KeyInfoType keyInfoField;
private ObjectType[] objectField;
private string idField;
/// <remarks/>
public SignedInfoType SignedInfo {
get {
return this.signedInfoField;
}
set {
this.signedInfoField = value;
}
}
/// <remarks/>
public SignatureValueType SignatureValue {
get {
return this.signatureValueField;
}
set {
this.signatureValueField = value;
}
}
Из сгенерированных классов, был создан в последующих XML:
Но когда я пытаюсь deserealize этот XML, используя функцию:
public static object DeserializarParaObjeto(string xmlStr, Type tipo)
{
TextReader tx = new StringReader(xmlStr);
XmlSerializer deSerializer = new XmlSerializer(tipo);
deSerializer.UnknownAttribute += deSerializer_UnknownAttribute;
deSerializer.UnknownElement += deSerializer_UnknownElement;
deSerializer.UnknownNode += deSerializer_UnknownNode;
deSerializer.UnreferencedObject += deSerializer_UnreferencedObject;
return deSerializer.Deserialize(tx);
}
deSerializer_UnknownNode событие (узел неизвестен, подпись). Объект сгенерирован, но подпись узла не назначена.
Это происходит потому, что xml содержит несколько пространств имен?
Что мне нужно сделать в этом случае?
Ps: Я не размещаю все xml и схемы, потому что слишком велик.