희망하는 포럼을 선택했습니다.DataSet에서 XML 직렬화 제어 - "TableName 요소"에 대한 특성
일반 사용자 지정 구성 요소의 GetDS 메서드에서 제공되는 테이블이 하나있는 데이터 집합 개체가 있습니다. XML을 다른 프로세스 (바이트 배열로 청크)에 전달해야합니다. 모든 작업이 있지만 XML은 소비 프로세스에서 기대하는 일부 특성이 누락되었습니다.
나는 DataSet 개체를 생성하고이 같은 TABLENAME (루트 요소)의 이름과 행 제어 할 수 있습니다 : 나는 다음과 같은 XML로 직렬화 할은 GetXML 방법을 사용
da.Fill(ds, "Foo")
ds.DataSetName = "FooUpload"
을 :
<?xml version="1.0" standalone="yes" ?>
<FooUpload>
<Foo>
<FooMasterID>483</FooMasterID>
<Country>27</Country>
<PaymentCode>ANN</PaymentCode>
<Amount>132</Amount>
<PaidDate>2012-12-31 00:00:00</PaidDate>
<PaidBy>FooServices</PaidBy>
</Foo>
</FooUpload>
호출 프로세스는
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<FooUpload **ClientCode="FOOO" RecordCount="1" CreateDate="2008-12-09T15:02:18.920" CreateUser="valli"**>
<Foo>
<FooMasterID>483</FooMasterID>
<Country>27</Country>
<PaymentCode>ANN</PaymentCode>
<Amount>132</Amount>
<PaidDate>2012-12-31 00:00:00</PaidDate>
<PaidBy>FooServices</PaidBy>
</Foo>
</FooUpload>
참고에 속성을 기대 FooUpload 요소. 이 노드는 DataSet에있는 DataTable의 이름입니다.
XMLSerializer를 제어하고 사용자 지정 개체에 대한 많은 예제를 찾는 방법을 검색했습니다. 나는 심지어 가까이에있는 MappingType.Attribute가되도록 열 매핑을 설정하는 예제를 발견했지만 실제로이 데이터 집합의 TableName 인 루트 요소를 사용하여이 작업을 수행해야합니다.
나는 좀 더 우아한 해결책을 찾지 못하면 변형 된 문자열과 XML의 나머지 부분을 반복하면서 침을 튀기는 것과 같은 해킹을 만들어야 할 것입니다.
미리 감사드립니다 (손가락이 낀)!
이것이 실제로 유일한 방법 일 수 있다고 생각합니다. DataSet serialization이 혼합 된 형식을 처리하지 않는다는 것이 "의도적으로"나와 있다는 것을 알게되었습니다. – sdmcnitt
@sdmcnitt : 그럼 내 대답에 투표하십시오. 그리고 만약 당신이 그것을 사용할 것이라고 생각한다면 받아 들여야합니다. –
투표에 "15 평판"이 필요합니다. 나는 악명 높은 것 같아요. – sdmcnitt