Delphi XE2에서 XML 데이터 바인딩 마법사를 사용하고 있습니다. 스키마는 이러한 유형의 태그를 요구했습니다Delphi XML 데이터 바인딩 마법사를 사용할 때 필수 태그가 없습니다.
<xs:element name="MyReport" type="MyReportType" />
<xs:complexType name="MyReportType">
<xs:all>
<xs:element name="Header" type="HeaderType" />
<xs:element name="Values" type="ValuesType" />
<xs:element name="Events" type="EventsType" />
</xs:all>
</xs:complexType>
문제는 그 나는 예를 들어, 어떤 요소를 추가하지 않는 경우 값 그룹에는 <Values>
태그가없고 XML 파일은 XSD에 대한 유효성 검사에 실패합니다. 이것은 아마도 인터페이스가 Values 태그를 "추가"하는 방법을 제공하고 있다면 문제가되지 않을 것입니다.
표준 처리 방법이 있습니까? 아니면 생성 된 코드를 올바르게 사용하고 있습니까? 단순히 넣어
, 어떤 방법은 경우가 위의 스키마를 사용하여 유효성을 검사하기 위해 필요한 것이다 (다음 XML을 생성, 마법사 데이터 바인딩의 코드를 사용하여 해결 방법이나 그렇지 않으면,이 HeaderType 주어진 자식 노드), 없다, ValuesType 및 EventsType이 복합 타입의 데이터입니다
<MyReport>
<Header />
<Values />
<Events />
</MyReport>
코드가 <xs:sequence>
최종 XML 파일에서 올바른 순서를 시행하지 않음으로써 발생하는 것처럼 (나는 다른 유사한 문제가 알고, 하지만 적어도 그 하나는 올바른 순서로 아이들을 삽입하기 만하면 해결할 수 있습니다. .
주문하신 언급의 문제점을 이미 발견했습니다. 생성 된 클래스는 XML 객체 모델을 둘러싼 벙어리 래퍼입니다. 요청할 때만 존재할 것입니다. 문자열 유형을 사용하면 충분히 쉽습니다 (빈 문자열 추가). 복잡한 유형의 경우 nil이 작동하는지 확실하지 않습니다. –
이것은 실제로 사실이 아닙니다. 'TXMLValuesType.AfterConstruction'에 대한 코드는 을 읽습니다.'RegisterChildNode ('Value', TXMLValueType); IXMLValueTypeList로 FValue : = CreateCollection (TXMLValueTypeList, IXMLValueType, 'Value'), 값 태그 (값 태그 아래에있는)의 컬렉션이 있으므로 빈 값 태그를 만드는 것이 어렵습니다 . 빈 값 목록은'SaveToFile'가' '-tag –
Randomeister
@Randomeister를 생성하도록 강요하지 않게됩니다. - XSD에서 minOccurs = "1"속성을 시도하십시오 : \t. 또한 대신 을 사용해보세요. 나는 바인딩 마법사 (Delphi XE)를 잘 다루었지만 문제가 발생하지는 않았다. 그러나 마법사가 순서와 필수 값을 이해할 수 있도록 유형과 속성을 올바르게 선언했는지 확인해야한다. –
Vector