0
현재 .NET 4.6 콘솔 응용 프로그램에서 작업 중입니다. 파일에서 XML을 구문 분석/직렬화하려고합니다.XML은 속성이있는 복합 유형을 직렬화합니다.
현재 XML의 복합 유형 직렬 처리에 어려움을 겪고 있습니다. 이에 따라 XSD 사양입니다뿐만 아니라
<cool_element>
<master visible="true">A1</master>
</cool_element>
: 감안할 때
는다음 XML 요소
C#에서 내 직렬화 클래스는 다음과 같습니다<xs:element name="cool_element">
<xs:complexType>
<xs:sequence>
<xs:element name="master">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="visible"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
:
[XmlRoot(ElementName = "cool_element")]
public class CoolElement
{
[XmlElement("master")]
public string Master { get; set; }
}
이를 문자열 값을 검색하기 위해 잘 작동합니다. 하지만 속성을 내 마스터 요소에서 볼 수있는 방법을 모르겠습니다.
해결 방법에 대한 아이디어가 있으십니까?
감사합니다.
CoolElement cool = null;
string path = @"yourxmlfilename.xml";
XmlSerializer serializer = new XmlSerializer(typeof(CoolElement));
using (var reader = XmlReader.Create(path))
{
cool = (CoolElement)serializer.Deserialize(reader);
Console.WriteLine("master value: " + cool.master.Value);
Console.WriteLine("attribute visible value: " + cool.master.visible);
}
가 수행합니다
다음[XmlRoot(ElementName = "cool_element")]
public class CoolElement
{
private Master masterField;
public Master master { get { return this.masterField; } set { this.masterField = value; } }
}
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public class Master
{
private bool visibleField;
private string valueField;
[System.Xml.Serialization.XmlAttributeAttribute()]
public bool visible { get { return this.visibleField; } set { this.visibleField = value; } }
[System.Xml.Serialization.XmlTextAttribute()]
public string Value { get { return this.valueField; } set { this.valueField = value; } }
}
데이터를 읽을 수 :
감사합니다. 도움이 많이 :) :) ... 나는 마스터 클래스를 약간 단순화했다, 나는 단지 속성 만 사용하고 개인 멤버는 사용하지 않는다. – TimHorton
굉장히 도움이 될 수있어서 기쁩니다. – cliveve