XmlSerializer c++ 反序列化与多个命名空间
XmlSerializer c++ Deserialize with multiple namespaces
我遇到了以下问题,关于Microsoft的XmlSerializer(c ++)和反序列化过程。 ds:signature 没有被解散,我得到了未识别的值。有人能发现任何错误吗?我的代码如下: 我的 xml 如下:
<?xml version="1.0" encoding="UTF-8"?>
<test xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<aa>
<version>0.1.1</version>
</aa>
<bb>
<cc>
<Id>134324321421</Id>
<ds:Signature>
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference Id="1" Type="" URI="something">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>43=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
4344
</ds:SignatureValue>
<ds:KeyInfo>
<ds:KeyValue>
<ds:RSAKeyValue>
<ds:Modulus>
4543434
</ds:Modulus>
<ds:Exponent>43</ds:Exponent>
</ds:RSAKeyValue>
</ds:KeyValue>
<ds:X509Data>
<ds:X509Certificate>
3454343243242
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</cc>
</bb>
</aa>
我的代码如下:
#using <mscorlib.dll>
#using <System.dll>
#using <System.Xml.dll>
//
// This source code was auto-generated by xsd, Version=2.0.50727.3038.
//
using namespace System::Xml::Serialization;
using namespace System;
namespace ds{
ref class _KeyInfo;
ref class _KeyValue;
ref class _RSAKeyValue;
ref class _X509Data;
ref class _Reference;
ref class _Transforms;
ref class _Transform;
ref class _DigestMethod;
ref class _Signature;
ref class _SignedInfo;
ref class _CanonicalizationMethod;
ref class _SignatureMethod;
/// <remarks/>
public ref class _KeyInfo {
private: _KeyValue^ keyValueField;
private: _X509Data^ x509DataField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("KeyValue", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property _KeyValue^ KeyValue {
_KeyValue^ get();
System::Void set(_KeyValue^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("X509Data", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property _X509Data^ X509Data {
_X509Data^ get();
System::Void set(_X509Data^ value);
}
};
public ref class _KeyValue {
private: _RSAKeyValue^ rSAKeyValueField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("RSAKeyValue", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property _RSAKeyValue^ RSAKeyValue {
_RSAKeyValue^ get();
System::Void set(_RSAKeyValue^ value);
}
};
public ref class _RSAKeyValue {
private: System::String^ modulusField;
private: System::String^ exponentField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("Modulus", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property System::String^ Modulus {
System::String^ get();
System::Void set(System::String^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("Exponent", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property System::String^ Exponent {
System::String^ get();
System::Void set(System::String^ value);
}
};
public ref class _X509Data {
private: System::String^ x509CertificateField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("X509Certificate", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property System::String^ X509Certificate {
System::String^ get();
System::Void set(System::String^ value);
}
};
public ref class _Reference {
private: _Transforms^ transformsField;
private: _DigestMethod^ digestMethodField;
private: System::String^ digestValueField;
private: System::String^ idField;
private: System::String^ typeField;
private: System::String^ uRIField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("Transforms", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property _Transforms^ Transforms {
_Transforms^ get();
System::Void set(_Transforms^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("DigestMethod", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property _DigestMethod^ DigestMethod {
_DigestMethod^ get();
System::Void set(_DigestMethod^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("DigestValue", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property System::String^ DigestValue {
System::String^ get();
System::Void set(System::String^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("Id", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property System::String^ Id {
System::String^ get();
System::Void set(System::String^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("Type", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property System::String^ Type {
System::String^ get();
System::Void set(System::String^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("URI", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property System::String^ URI {
System::String^ get();
System::Void set(System::String^ value);
}
};
public ref class _Transforms {
private: _Transform^ transformField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("Transform", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property _Transform^ Transform {
_Transform^ get();
System::Void set(_Transform^ value);
}
};
public ref class _Transform {
private: System::String^ algorithmField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("Algorithm", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property System::String^ Algorithm {
System::String^ get();
System::Void set(System::String^ value);
}
};
[System::Xml::Serialization::XmlRoot("DigestMethod", Namespace = "http://www.w3.org/2000/09/xmldsig")]
public ref class _DigestMethod {
private: System::String ^algorithmField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("Algorithm", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property System::String^ Algorithm {
System::String^ get();
System::Void set(System::String^ value);
}
};
public ref class _SignedInfo {
private: _CanonicalizationMethod^ canonicalizationMethodField;
private: _SignatureMethod^ signatureMethodField;
private: _Reference^ referenceField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("CanonicalizationMethod", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property _CanonicalizationMethod^ CanonicalizationMethod {
_CanonicalizationMethod^ get();
System::Void set(_CanonicalizationMethod^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("SignatureMethod", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property _SignatureMethod^ SignatureMethod {
_SignatureMethod^ get();
System::Void set(_SignatureMethod^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("Reference", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property _Reference^ Reference {
_Reference^ get();
System::Void set(_Reference^ value);
}
};
public ref class _CanonicalizationMethod {
private: System::String^ algorithmField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("Algorithm", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property System::String^ Algorithm {
System::String^ get();
System::Void set(System::String^ value);
}
};
public ref class _SignatureMethod {
private: System::String ^algorithmField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("Algorithm", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property System::String^ Algorithm {
System::String^ get();
System::Void set(System::String^ value);
}
};
public ref class signature {
private: _SignedInfo^ signedInfoField;
private: System::String^ signatureValueField;
private: _KeyInfo^ keyInfoField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("SignedInfo", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property _SignedInfo^ SignedInfo {
_SignedInfo^ get();
System::Void set(_SignedInfo^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("SignatureValue", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property System::String^ SignatureValue {
System::String^ get();
System::Void set(System::String^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("KeyInfo", Namespace = "http://www.w3.org/2000/09/xmldsig")]
property _KeyInfo^ KeyInfo {
_KeyInfo^ get();
System::Void set(_KeyInfo^ value);
}
};
inline _KeyValue^ _KeyInfo::KeyValue::get() {
return this->keyValueField;
}
inline System::Void _KeyInfo::KeyValue::set(_KeyValue^ value) {
this->keyValueField = value;
}
inline _X509Data^ _KeyInfo::X509Data::get() {
return this->x509DataField;
}
inline System::Void _KeyInfo::X509Data::set(_X509Data^ value) {
this->x509DataField = value;
}
inline _RSAKeyValue^ _KeyValue::RSAKeyValue::get() {
return this->rSAKeyValueField;
}
inline System::Void _KeyValue::RSAKeyValue::set(_RSAKeyValue^ value) {
this->rSAKeyValueField = value;
}
inline System::String^ _RSAKeyValue::Modulus::get() {
return this->modulusField;
}
inline System::Void _RSAKeyValue::Modulus::set(System::String^ value) {
this->modulusField = value;
}
inline System::String^ _RSAKeyValue::Exponent::get() {
return this->exponentField;
}
inline System::Void _RSAKeyValue::Exponent::set(System::String^ value) {
this->exponentField = value;
}
inline System::String^ _X509Data::X509Certificate::get() {
return this->x509CertificateField;
}
inline System::Void _X509Data::X509Certificate::set(System::String^ value) {
this->x509CertificateField = value;
}
inline _Transforms^ _Reference::Transforms::get() {
return this->transformsField;
}
inline System::Void _Reference::Transforms::set(_Transforms^ value) {
this->transformsField = value;
}
inline _DigestMethod^ _Reference::DigestMethod::get() {
return this->digestMethodField;
}
inline System::Void _Reference::DigestMethod::set(_DigestMethod^ value) {
this->digestMethodField = value;
}
inline System::String^ _Reference::DigestValue::get() {
return this->digestValueField;
}
inline System::Void _Reference::DigestValue::set(System::String^ value) {
this->digestValueField = value;
}
inline System::String^ _Reference::Id::get() {
return this->idField;
}
inline System::Void _Reference::Id::set(System::String^ value) {
this->idField = value;
}
inline System::String^ _Reference::Type::get() {
return this->typeField;
}
inline System::Void _Reference::Type::set(System::String^ value) {
this->typeField = value;
}
inline System::String^ _Reference::URI::get() {
return this->uRIField;
}
inline System::Void _Reference::URI::set(System::String^ value) {
this->uRIField = value;
}
inline _Transform^ _Transforms::Transform::get() {
return this->transformField;
}
inline System::Void _Transforms::Transform::set(_Transform^ value) {
this->transformField = value;
}
inline System::String^ _Transform::Algorithm::get() {
return this->algorithmField;
}
inline System::Void _Transform::Algorithm::set(System::String^ value) {
this->algorithmField = value;
}
inline System::String^ _DigestMethod::Algorithm::get() {
return this->algorithmField;
}
inline System::Void _DigestMethod::Algorithm::set(System::String^ value) {
this->algorithmField = value;
}
inline _SignedInfo^ signature::SignedInfo::get() {
return this->signedInfoField;
}
inline System::Void signature::SignedInfo::set(_SignedInfo^ value) {
this->signedInfoField = value;
}
inline System::String^ signature::SignatureValue::get() {
return this->signatureValueField;
}
inline System::Void signature::SignatureValue::set(System::String^ value) {
this->signatureValueField = value;
}
inline _KeyInfo^ signature::KeyInfo::get() {
return this->keyInfoField;
}
inline System::Void signature::KeyInfo::set(_KeyInfo^ value) {
this->keyInfoField = value;
}
inline _CanonicalizationMethod^ _SignedInfo::CanonicalizationMethod::get() {
return this->canonicalizationMethodField;
}
inline System::Void _SignedInfo::CanonicalizationMethod::set(_CanonicalizationMethod^ value) {
this->canonicalizationMethodField = value;
}
inline _SignatureMethod^ _SignedInfo::SignatureMethod::get() {
return this->signatureMethodField;
}
inline System::Void _SignedInfo::SignatureMethod::set(_SignatureMethod^ value) {
this->signatureMethodField = value;
}
inline _Reference^ _SignedInfo::Reference::get() {
return this->referenceField;
}
inline System::Void _SignedInfo::Reference::set(_Reference^ value) {
this->referenceField = value;
}
inline System::String^ _CanonicalizationMethod::Algorithm::get() {
return this->algorithmField;
}
inline System::Void _CanonicalizationMethod::Algorithm::set(System::String^ value) {
this->algorithmField = value;
}
inline System::String^ _SignatureMethod::Algorithm::get() {
return this->algorithmField;
}
inline System::Void _SignatureMethod::Algorithm::set(System::String^ value) {
this->algorithmField = value;
}
};
///====================================================================================
public ref class AA{
public:
System::String^ version;
};
public ref class CC{
public:
System::String^ Id;
public: [System::Xml::Serialization::XmlElement("Signature", Namespace = "http://www.w3.org/2000/09/xmldsig")]
ds::signature^ Signature
};
public ref class BB{
public:
CC ^cc
};
[System::Xml::Serialization::XmlRoot("test", Namespace = "")]
public ref class test {
public:
AA ^aa;
BB ^bb;
};
//==============================================================================
NameTable^ nt = gcnew NameTable();
XmlNamespaceManager ^ namesp = gcnew XmlNamespaceManager (nt);
namesp->AddNamespace("ds", "http://www.w3.org/2000/09/xmldsig#");
XmlSerializer^ serializer = gcnew XmlSerializer( test::typeid, "http://www.w3.org/2000/09/xmldsig#");
// A FileStream is needed to read the XML document.
FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
XmlReader^ reader = gcnew XmlTextReader( fs,namesp->NameTable);
// Declare an object variable of the type to be deserialized.
test^ i;
// Use the Deserialize method to restore the object's state.
i = dynamic_cast<test^>(serializer->Deserialize( reader));
你在这里有几个问题:
-
XML中的命名空间是
http://www.w3.org/2000/09/xmldsig#
但是在c ++属性修饰中省略了尾随#
,例如:public: [System::Xml::Serialization::XmlElement("Signature", Namespace = "http://www.w3.org/2000/09/xmldsig")] ds::signature^ Signature
命名空间不匹配会导致无法读取签名。
-
您修饰的几个字段实际上
XmlElement
XML 文件中显示为属性,因此需要使用XmlAttribute
进行修饰,例如:public: [System::Xml::Serialization::XmlElement("Id", Namespace = "http://www.w3.org/2000/09/xmldsig")] property System::String^ Id { System::String^ get(); System::Void set(System::String^ value); }
-
此外,所有需要标记为属性的字段也需要放在空命名空间中。 例如,在行
<ds:Reference Id="1" Type="" URI="something">
中,注意到Id
、Type
和URI
没有ds:
前缀吗?这意味着它们不在任何命名空间中。
在下面的代码中修复这些问题后,我可以读取您提供的 XML。
public ref class _KeyInfo {
private: _KeyValue^ keyValueField;
private: _X509Data^ x509DataField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("KeyValue", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
property _KeyValue^ KeyValue {
_KeyValue^ get();
System::Void set(_KeyValue^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("X509Data", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
property _X509Data^ X509Data {
_X509Data^ get();
System::Void set(_X509Data^ value);
}
};
public ref class _KeyValue {
private: _RSAKeyValue^ rSAKeyValueField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("RSAKeyValue", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
property _RSAKeyValue^ RSAKeyValue {
_RSAKeyValue^ get();
System::Void set(_RSAKeyValue^ value);
}
};
public ref class _RSAKeyValue {
private: System::String^ modulusField;
private: System::String^ exponentField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("Modulus", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
property System::String^ Modulus {
System::String^ get();
System::Void set(System::String^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("Exponent", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
property System::String^ Exponent {
System::String^ get();
System::Void set(System::String^ value);
}
};
public ref class _X509Data {
private: System::String^ x509CertificateField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("X509Certificate", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
property System::String^ X509Certificate {
System::String^ get();
System::Void set(System::String^ value);
}
};
public ref class _Reference {
private: _Transforms^ transformsField;
private: _DigestMethod^ digestMethodField;
private: System::String^ digestValueField;
private: System::String^ idField;
private: System::String^ typeField;
private: System::String^ uRIField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("Transforms", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
property _Transforms^ Transforms {
_Transforms^ get();
System::Void set(_Transforms^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("DigestMethod", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
property _DigestMethod^ DigestMethod {
_DigestMethod^ get();
System::Void set(_DigestMethod^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("DigestValue", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
property System::String^ DigestValue {
System::String^ get();
System::Void set(System::String^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlAttribute("Id", Namespace = "")]
property System::String^ Id {
System::String^ get();
System::Void set(System::String^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlAttribute("Type", Namespace = "")]
property System::String^ Type {
System::String^ get();
System::Void set(System::String^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlAttribute("URI", Namespace = "")]
property System::String^ URI {
System::String^ get();
System::Void set(System::String^ value);
}
};
public ref class _Transforms {
private: _Transform^ transformField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("Transform", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
property _Transform^ Transform {
_Transform^ get();
System::Void set(_Transform^ value);
}
};
public ref class _Transform {
private: System::String^ algorithmField;
/// <remarks/>
public: [System::Xml::Serialization::XmlAttribute("Algorithm", Namespace = "")]
property System::String^ Algorithm {
System::String^ get();
System::Void set(System::String^ value);
}
};
[System::Xml::Serialization::XmlRoot("DigestMethod", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
public ref class _DigestMethod {
private: System::String ^algorithmField;
/// <remarks/>
public: [System::Xml::Serialization::XmlAttribute("Algorithm", Namespace = "")]
property System::String^ Algorithm {
System::String^ get();
System::Void set(System::String^ value);
}
};
public ref class _SignedInfo {
private: _CanonicalizationMethod^ canonicalizationMethodField;
private: _SignatureMethod^ signatureMethodField;
private: _Reference^ referenceField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("CanonicalizationMethod", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
property _CanonicalizationMethod^ CanonicalizationMethod {
_CanonicalizationMethod^ get();
System::Void set(_CanonicalizationMethod^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("SignatureMethod", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
property _SignatureMethod^ SignatureMethod {
_SignatureMethod^ get();
System::Void set(_SignatureMethod^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("Reference", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
property _Reference^ Reference {
_Reference^ get();
System::Void set(_Reference^ value);
}
};
public ref class _CanonicalizationMethod {
private: System::String^ algorithmField;
/// <remarks/>
public: [System::Xml::Serialization::XmlAttribute("Algorithm", Namespace = "")]
property System::String^ Algorithm {
System::String^ get();
System::Void set(System::String^ value);
}
};
public ref class _SignatureMethod {
private: System::String ^algorithmField;
/// <remarks/>
public: [System::Xml::Serialization::XmlAttribute("Algorithm", Namespace = "")]
property System::String^ Algorithm {
System::String^ get();
System::Void set(System::String^ value);
}
};
public ref class signature {
private: _SignedInfo^ signedInfoField;
private: System::String^ signatureValueField;
private: _KeyInfo^ keyInfoField;
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("SignedInfo", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
property _SignedInfo^ SignedInfo {
_SignedInfo^ get();
System::Void set(_SignedInfo^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("SignatureValue", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
property System::String^ SignatureValue {
System::String^ get();
System::Void set(System::String^ value);
}
/// <remarks/>
public: [System::Xml::Serialization::XmlElement("KeyInfo", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
property _KeyInfo^ KeyInfo {
_KeyInfo^ get();
System::Void set(_KeyInfo^ value);
}
};
inline _KeyValue^ _KeyInfo::KeyValue::get() {
return this->keyValueField;
}
inline System::Void _KeyInfo::KeyValue::set(_KeyValue^ value) {
this->keyValueField = value;
}
inline _X509Data^ _KeyInfo::X509Data::get() {
return this->x509DataField;
}
inline System::Void _KeyInfo::X509Data::set(_X509Data^ value) {
this->x509DataField = value;
}
inline _RSAKeyValue^ _KeyValue::RSAKeyValue::get() {
return this->rSAKeyValueField;
}
inline System::Void _KeyValue::RSAKeyValue::set(_RSAKeyValue^ value) {
this->rSAKeyValueField = value;
}
inline System::String^ _RSAKeyValue::Modulus::get() {
return this->modulusField;
}
inline System::Void _RSAKeyValue::Modulus::set(System::String^ value) {
this->modulusField = value;
}
inline System::String^ _RSAKeyValue::Exponent::get() {
return this->exponentField;
}
inline System::Void _RSAKeyValue::Exponent::set(System::String^ value) {
this->exponentField = value;
}
inline System::String^ _X509Data::X509Certificate::get() {
return this->x509CertificateField;
}
inline System::Void _X509Data::X509Certificate::set(System::String^ value) {
this->x509CertificateField = value;
}
inline _Transforms^ _Reference::Transforms::get() {
return this->transformsField;
}
inline System::Void _Reference::Transforms::set(_Transforms^ value) {
this->transformsField = value;
}
inline _DigestMethod^ _Reference::DigestMethod::get() {
return this->digestMethodField;
}
inline System::Void _Reference::DigestMethod::set(_DigestMethod^ value) {
this->digestMethodField = value;
}
inline System::String^ _Reference::DigestValue::get() {
return this->digestValueField;
}
inline System::Void _Reference::DigestValue::set(System::String^ value) {
this->digestValueField = value;
}
inline System::String^ _Reference::Id::get() {
return this->idField;
}
inline System::Void _Reference::Id::set(System::String^ value) {
this->idField = value;
}
inline System::String^ _Reference::Type::get() {
return this->typeField;
}
inline System::Void _Reference::Type::set(System::String^ value) {
this->typeField = value;
}
inline System::String^ _Reference::URI::get() {
return this->uRIField;
}
inline System::Void _Reference::URI::set(System::String^ value) {
this->uRIField = value;
}
inline _Transform^ _Transforms::Transform::get() {
return this->transformField;
}
inline System::Void _Transforms::Transform::set(_Transform^ value) {
this->transformField = value;
}
inline System::String^ _Transform::Algorithm::get() {
return this->algorithmField;
}
inline System::Void _Transform::Algorithm::set(System::String^ value) {
this->algorithmField = value;
}
inline System::String^ _DigestMethod::Algorithm::get() {
return this->algorithmField;
}
inline System::Void _DigestMethod::Algorithm::set(System::String^ value) {
this->algorithmField = value;
}
inline _SignedInfo^ signature::SignedInfo::get() {
return this->signedInfoField;
}
inline System::Void signature::SignedInfo::set(_SignedInfo^ value) {
this->signedInfoField = value;
}
inline System::String^ signature::SignatureValue::get() {
return this->signatureValueField;
}
inline System::Void signature::SignatureValue::set(System::String^ value) {
this->signatureValueField = value;
}
inline _KeyInfo^ signature::KeyInfo::get() {
return this->keyInfoField;
}
inline System::Void signature::KeyInfo::set(_KeyInfo^ value) {
this->keyInfoField = value;
}
inline _CanonicalizationMethod^ _SignedInfo::CanonicalizationMethod::get() {
return this->canonicalizationMethodField;
}
inline System::Void _SignedInfo::CanonicalizationMethod::set(_CanonicalizationMethod^ value) {
this->canonicalizationMethodField = value;
}
inline _SignatureMethod^ _SignedInfo::SignatureMethod::get() {
return this->signatureMethodField;
}
inline System::Void _SignedInfo::SignatureMethod::set(_SignatureMethod^ value) {
this->signatureMethodField = value;
}
inline _Reference^ _SignedInfo::Reference::get() {
return this->referenceField;
}
inline System::Void _SignedInfo::Reference::set(_Reference^ value) {
this->referenceField = value;
}
inline System::String^ _CanonicalizationMethod::Algorithm::get() {
return this->algorithmField;
}
inline System::Void _CanonicalizationMethod::Algorithm::set(System::String^ value) {
this->algorithmField = value;
}
inline System::String^ _SignatureMethod::Algorithm::get() {
return this->algorithmField;
}
inline System::Void _SignatureMethod::Algorithm::set(System::String^ value) {
this->algorithmField = value;
}
};
///====================================================================================
public ref class AA{
public:
System::String^ version;
};
public ref class CC{
public:
System::String^ Id;
public: [System::Xml::Serialization::XmlElement("Signature", Namespace = "http://www.w3.org/2000/09/xmldsig#")]
ds::signature^ Signature;
};
public ref class BB{
public:
CC ^cc;
};
[System::Xml::Serialization::XmlRoot("test", Namespace = "")]
public ref class test {
public:
AA ^aa;
BB ^bb;
};
将来,检查工作的一种方法是使用xsd.exe
为 XML 生成 C# 类,然后将自动生成的 c# 类与手动创建的 c++ 类进行比较。 您可能会看到问题。
相关文章:
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 在命名空间中定义函数还是限定函数
- C++:对不存在的命名空间使用命名空间指令
- 通过继承类使用来自不同命名空间的运算符
- 使用命名空间时出现多个定义错误
- CUDA内核和数学函数的显式命名空间
- 嵌套的匿名命名空间
- CMakeLists.txt中的命名空间表示法
- 类是C++中的命名空间吗
- 在命名空间中使用全局命名空间中的函数
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- '使用命名空间{嵌套在另一个命名空间中的某个命名空间}"
- 是否可以将函数导入命名空间,但不能导出它?
- C++ C++类中的命名空间降级
- 如何使用 soong 命名空间来有条件地编译模块
- 使用 Clang++ 有没有办法将文件作为命名空间等包含?
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何通过命名空间调用非静态方法
- 在命名空间名称之前加上 :: 是什么意思?