생성 된 클래스의 속성에 액세스 권한을 부여했습니다. XSD로 생성 된 클래스에 대한 액세스
이
내 XML입니다 :<?xml version="1.0" encoding="UTF-8"?>
<e:Envelope xmlns:e="http://www.w3.org/2003/05/soap-envelope"
xmlns:w="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery"
xmlns:dn="http://www.onvif.org/ver10/network/wsdl">
<e:Header>
<w:MessageID>uuid:84ede3de-7dec-11d0-c360-f</w:MessageID>
<w:To e:mustUnderstand="true">urn:schemas-xmlsoap-org:ws:2005:04:discovery</w:To>
<w:Action mustUnderstand="true">
http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe
</w:Action>
</e:Header>
<e:Body>
<d:Probe>
<d:Scopes></d:Scopes>
<d:Types>dn:NetworkVideoTransmitter</d:Types>
</d:Probe>
</e:Body>
</e:Envelope>
이 내 생성 된 XSD (세 가지 중 하나) :
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Envelope" targetNamespace="http://www.w3.org/2003/05/soap-envelope"
xmlns:mstns="http://www.w3.org/2003/05/soap-envelope"
xmlns="http://www.w3.org/2003/05/soap-envelope"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft
com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified"
xmlns:app1="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:app2="http://schemas.xmlsoap.org/ws/2005/04/discovery">
<xs:import namespace="http://schemas.xmlsoap.org/ws/2005/04/discovery" schemaLocation="Probe_app2.xsd" />
<xs:import namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing" schemaLocation="Probe_app1.xsd" />
<xs:attribute name="mustUnderstand" msdata:Prefix="e" type="xs:string" />
<xs:element name="Envelope" msdata:IsDataSet="true" msdata:Locale="en-US" msdata:Prefix="e">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Header" msdata:Prefix="e">
<xs:complexType>
<xs:sequence>
<xs:element ref="app1:MessageID" minOccurs="0" />
<xs:element ref="app1:To" />
<xs:element ref="app1:Action" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Body" msdata:Prefix="e">
<xs:complexType>
<xs:sequence>
<xs:element ref="app2:Probe" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
그리고 마지막으로 이것이다가 xsd2code에서 내 생성 된 클래스 :
namespace PROBE
{
using System;
using System.Diagnostics;
using System.Xml.Serialization;
using System.Collections;
using System.Xml.Schema;
using System.ComponentModel;
using System.IO;
using System.Text;
using System.Collections.Generic;
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.233")]
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.w3.org/2003/05/soap-envelope")]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.w3.org/2003/05/soap-envelope", IsNullable = false)]
public partial class Envelope
{
private List<object> itemsField;
private static System.Xml.Serialization.XmlSerializer serializer;
public Envelope()
{
this.itemsField = new List<object>();
}
[System.Xml.Serialization.XmlElementAttribute("Body", typeof(EnvelopeBody), Order = 0)]
[System.Xml.Serialization.XmlElementAttribute("Header", typeof(EnvelopeHeader), Order = 0)]
public List<object> Items
{
get
{
return this.itemsField;
}
set
{
this.itemsField = value;
}
}
private static System.Xml.Serialization.XmlSerializer Serializer
{
get
{
if ((serializer == null))
{
serializer = new System.Xml.Serialization.XmlSerializer(typeof(Envelope));
}
return serializer;
}
}
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.233")]
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.w3.org/2003/05/soap-envelope")]
public partial class EnvelopeBody
{
private Probe probeField;
private static System.Xml.Serialization.XmlSerializer serializer;
public EnvelopeBody()
{
this.probeField = new Probe();
}
[System.Xml.Serialization.XmlElementAttribute(Namespace = "http://schemas.xmlsoap.org/ws/2005/04/discovery", Order = 0)]
public Probe Probe
{
get
{
return this.probeField;
}
set
{
this.probeField = value;
}
}
private static System.Xml.Serialization.XmlSerializer Serializer
{
get
{
if ((serializer == null))
{
serializer = new System.Xml.Serialization.XmlSerializer(typeof(EnvelopeBody));
}
return serializer;
}
}
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.233")]
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://schemas.xmlsoap.org/ws/2005/04/discovery")]
public partial class Probe
{
private string scopesField;
private string typesField;
private static System.Xml.Serialization.XmlSerializer serializer;
[System.Xml.Serialization.XmlElementAttribute(Order = 0)]
public string Scopes
{
get
{
return this.scopesField;
}
set
{
this.scopesField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Order = 1)]
public string Types
{
get
{
return this.typesField;
}
set
{
this.typesField = value;
}
}
private static System.Xml.Serialization.XmlSerializer Serializer
{
get
{
if ((serializer == null))
{
serializer = new System.Xml.Serialization.XmlSerializer(typeof(Probe));
}
return serializer;
}
}
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.233")]
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.w3.org/2003/05/soap-envelope")]
public partial class EnvelopeHeader
{
private string messageIDField;
private To toField;
private Action actionField;
private static System.Xml.Serialization.XmlSerializer serializer;
public EnvelopeHeader()
{
this.actionField = new Action();
this.toField = new To();
}
[System.Xml.Serialization.XmlElementAttribute(Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing", Order = 0)]
public string MessageID
{
get
{
return this.messageIDField;
}
set
{
this.messageIDField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing", IsNullable = true, Order = 1)]
public To To
{
get
{
return this.toField;
}
set
{
this.toField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing", IsNullable = true, Order = 2)]
public Action Action
{
get
{
return this.actionField;
}
set
{
this.actionField = value;
}
}
private static System.Xml.Serialization.XmlSerializer Serializer
{
get
{
if ((serializer == null))
{
serializer = new System.Xml.Serialization.XmlSerializer(typeof(EnvelopeHeader));
}
return serializer;
}
}
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.233")]
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing")]
public partial class To
{
private string mustUnderstandField;
private string valueField;
private static System.Xml.Serialization.XmlSerializer serializer;
[System.Xml.Serialization.XmlAttributeAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/2003/05/soap-envelope")]
public string mustUnderstand
{
get
{
return this.mustUnderstandField;
}
set
{
this.mustUnderstandField = value;
}
}
[System.Xml.Serialization.XmlTextAttribute()]
public string Value
{
get
{
return this.valueField;
}
set
{
this.valueField = value;
}
}
private static System.Xml.Serialization.XmlSerializer Serializer
{
get
{
if ((serializer == null))
{
serializer = new System.Xml.Serialization.XmlSerializer(typeof(To));
}
return serializer;
}
}
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.233")]
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing")]
public partial class Action
{
private string mustUnderstandField;
private string valueField;
private static System.Xml.Serialization.XmlSerializer serializer;
[System.Xml.Serialization.XmlAttributeAttribute()]
public string mustUnderstand
{
get
{
return this.mustUnderstandField;
}
set
{
this.mustUnderstandField = value;
}
}
[System.Xml.Serialization.XmlTextAttribute()]
public string Value
{
get
{
return this.valueField;
}
set
{
this.valueField = value;
}
}
private static System.Xml.Serialization.XmlSerializer Serializer
{
get
{
if ((serializer == null))
{
serializer = new System.Xml.Serialization.XmlSerializer(typeof(Action));
}
return serializer;
}
}
}
}
역 직렬화에 아무런 문제가 없지만 적절한 클래스를 만들었지 만 잘 모르겠습니다. acc to 속성에.
PROBE.Envelope env = PROBE.Envelope.Deserialize(xmlString);
env.Items[0].MessageID = "xxxxxxxxxxx";
을하지만 그것은 잘못된 것입니다 : 나는 그런 식으로 뭔가를 시도하고 있었다.
(오류 33 'object'에 'MessageID'에 대한 정의가없고 'objectID'유형의 첫 번째 인수를 허용하는 'MessageID'가 없습니다. 사용 지시문이나 어셈블리 참조가 누락 되었습니까? ?)
클래스 구조를 더 잘 이해하기 위해 그림에 link을 포함 시켰습니다. 감사의 말을 전하는 데 감사드립니다.
예, 나는 그것이 좋은 생각, 항목 [0] EnvelopeHeader 종류와 항목이기 때문에 [1] EnvelopeBody 유형입니다 ... – Hyen
아아 네, 감사합니다! – Hyen