2014-09-25 2 views
1

SQL 쿼리를 사용하여 요청을 보내고 테이블을 반환하는 ASP 웹 서비스 (.asmx)를 만들었습니다. 테이블 구조가 알려지지 않았기 때문에 필자는 각 필드의 열 이름과 값이있는 일반 스키마를 행에 그룹화 한 다음 테이블 개체로 생각했습니다. ASP 웹 메서드에서 개체 직렬화

<table> 
    <row> 
    <field> 
     <colname>ID</colname> 
     <value>32</value> 
    </field> 
    <field> 
     ... 
    </field> 
    </row> 
    <row> 
    ... 
    </row> 
</table> 

및 이에 대한

는이 같은 테이블 개체, 행 개체 및 필드 객체 생성 :

public class Table 
{ 
    public Table() 
    { 
     Rows = new List<Row>(); 
    } 

    public List<Row> Rows { get; set; } 
} 

public class Row 
{ 
    public Row() 
    { 
     Fields = new List<Field>(); 
    } 

    public List<Field> Fields { get; set; } 
} 

public class Field 
{ 
    public string Name { get; set; } 
    public string Value { get; set; } 
} 

을하고 내가 만든 내 말은 반환이 XML이다

<?xml version="1.0" encoding="utf-8"?> 
<Table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"...> 
    <Rows> 
    <Row> 
     <Fields> 
     <Field> 
      <Name>ID</Name> 
      <Value>23</Value> 
     </Field> 
     <Field> 
      ... 
     </Field> 
     </Fields> 
    </Row> 
    <Row> 
     ... 
    </Row> 
    </Rows> 
</Table> 

문제는 다음 DB에서 데이터를 검색하고, 테이블 오브젝트에 매핑하고, 이것이 방법은 다음 자동으로 직렬화와 같은 XML 파일을 출력하는 웹 방법, 반환그러나 필자는 필요한 구조로 출력물을 얻지 못하고 필요없는 'Rows'및 'Fields'태그와 같은 변수 이름도 가져옵니다. , 또한 로우 객체없이 단지 테이블 오브젝트를 구비했지만, 직접 List<List<Field>>으로, 그렇지만 출력 구조 <Table><Row><ArrayOfFields><Field>...

그래서 결론적으로, 방법 I이 경우, DTO을 만들어야 표 목적 그러면 xml 출력은 처음에 표시된 것과 같습니다 (<Table><Row><Field>...)? 나는 내 질문에 내가 어느 정도 명확했으면 좋겠다. 미리 감사드립니다.

+0

이것은 [tag : classic-asp]과 아무런 관련이 없습니다. 아마도이 질문에 올바르게 태그를 다시 지정해야합니다. – Paul

답변

1

는이 작업을 수행하려면 예를

이 추가 요소를 제거하려면 사용자 정의 직렬화가 클래스와 속성

속성을 적용해야합니다. System.Xml.Serialization 네임 스페이스에서 다른 문제를 해결할 수 있습니다.

+0

좋았어, 고마워, 정말 미치게 만들었다. 그러나 나는 뒤에있는 논리를 잘 모르겠다. 사용자 정의 속성은 다른 객체에 어떻게 바인딩됩니까? 여기에서 "row"XmlElement는 변수의 "Rows"라는 이름을 피하고 Row 객체로 건너 뜁니까? 한 번 더 질문드립니다. JSON에서 출력을 제공하도록 서비스를 변경하면 이러한 속성이 여전히 유효합니까? – stackoverflowthebest

+1

잘 작동했습니다. 대략, Row 개체가 Table 개체 내에서 직렬화되기 때문입니다. 배열이나 Row 객체를 직접 직렬화하면 과 같은 것을 볼 수 있습니다. – Beemen