집 >백엔드 개발 >XML/RSS 튜토리얼 >Powerbuilder의 xml 애플리케이션 코드 예
powerbuilder의 데이터 창은 정말 좋습니다. 작업은 기본적으로 이루어지며 매우 효율적입니다. 지난 며칠 동안 프로젝트에서 xml 파일을 내보내야 할 때 pb9(xml 내보내기 및 가져오기 기능)를 사용합니다. is from powerbuilder9.0 추가된 기능) 타당성을 검증하기 위해 데모를 만들었습니다
샘플 파일은 다음과 같습니다(DTD는 게시되지 않으며 간단한 예제가 제공됩니다)
코드는 다음과 같습니다.
<trans> <transdetail> <order><date/></order> <orderdetail><product/></orderdetail> <orderdetail><product/></orderdetail> </transdetail> <transdetail> <order><date/></order> <orderdetail><product/></orderdetail> <orderdetail><product/></orderdetail> </transdetail> </trans>
저의 테이블 구조는, 모두의 테이블이 이렇게 디자인되어야 한다고 생각합니다.
주문(판매 주문, 고객, 날짜 및 기타 정보 포함)
orderdetail(제품, 수량, 가격 정보를 포함한 판매 주문 세부정보)
이 시점에서 안목 있는 사람이라면 이 xml 형식에 몇 가지 문제가 있음을 한눈에 알 수 있습니다. 이게 더 합리적일 수도 있습니다
코드는 다음과 같습니다.
<trans> <!--transdetail 这个节或许是多余的--> <order> <date/> <detail><!-- 明细是一个订单的一部分,不应该脱离订单头--> <orderdetail><product/></orderdetail> <orderdetail><product/></orderdetail> </detail> </order> <order> <date/> <detail> <orderdetail><product/></orderdetail> <orderdetail><product/></orderdetail> </detail> </order> </trans>
근데 저는 ZF 부서이고 변경할 수 없어서 심하게 해야 합니다
. pb9의 처리 코드: 실제로 pb9에는 세 줄의 코드만 작성됩니다. 실제 코드는 실제로 한 줄만 있는데, 그 위에 데이터 창과 버튼이 있고, 이 코드는 다음과 같습니다. 버튼에 적혀있네요 ㅎㅎ
dw_export.save("c:test.xml",xml!,false)
사실 우리가 정말 처리해야 할 것은 a를 정의하는 것입니다. 두 개의 데이터 창은 주로 xml 템플릿:
d_order(주문 헤더 데이터 내보내기, 코드의 두 번째 줄, EITX에서 설정 가능)
1. 새 데이터 창을 만듭니다(여기서 조건이 다음과 같은 경우에 데이터에 여러 행이 있는 경우). 그렇지 않으면 생성된 데이터가 중복됩니다.
3. 내보내기/가져오기 템플릿 xml(이하 EITX) 편집 영역을 마우스 오른쪽 버튼으로 클릭하고 다른 이름으로 저장합니다
4. 데이터 내보내기에서 사용 템플릿을 방금 저장한 템플릿 이름으로 설정
정의된 템플릿은 다음과 같습니다.
코드는 다음과 같습니다.
<?xml version=~"1.0~" encoding=~"gb2312~" standalone=~"no~"?> <trans> <transdetail __pbband=~"detail~"><!-- 在EITX中的transdetail节上点右键选中"starts detail" [注1] --> <order> <date>order_date</date> </order> dw_detail <!-- 在EITX中的transdetail节上点右键选"add child"下的"datawindow control refrence" [注2] --> </transdetail> </trans>
에는 2개가 있습니다.
[참고 1] 이 시작 세부정보는 데이터의 루프를 제어하므로 선택해야 하지만 각 XML은 하나만 정의할 수 있으며 여기서 문제가 발생합니다. 주문 헤더가 루프되면 어떻게 할 수 있습니까? 또 가나요? 주문 내역 주기, 결론은 하나의 데이터 창에서 구현할 수 없고 별도의 데이터 창에서 처리해야 하므로 참고 2
[참고 2] d_order에 보고서를 삽입해야 합니다. , 즉, d_orderdetail, in d_order 컨트롤 목록(데이터윈도우 컨트롤 참조와 동일)은 dw_detail(기본 이름은 dw_1, 이름을 변경했습니다)
d_orderdetail(주문 세부 데이터 내보내기, 즉 위 보고서에서 dw_detail이 참조하는 데이터 창(세 번째 줄 코드는 EITX에서 설정 가능)
1. 새 데이터 창을 생성합니다
2. 내보내기/가져오기 템플릿 xml을 마우스 오른쪽 버튼으로 클릭합니다(이하 참조). EITX) 편집 영역, 다른 이름으로 저장
3. 데이터 내보내기 아래의 사용 템플릿은 방금 저장한 템플릿 이름으로 설정됩니다.
b30976ddb2b67c74bf1bb842035f1ea0
f8a43964807632951ff0d1b578c07450 bae5bd0192248537afbfe165a553cc2d
< ;orderdetail __pbband=~"detail~">a1b8820020c1e28720d4992ef15a099b
a719999c5224e00a42ab5e276e57a41bproduct_name1da18c4b98da1fc43a8786f07f99713f
a41d32f826faafc22f7b9211b5e2f6b0 Detail>
[참고 3] d_order xml로 내보낼 때 d_orderdetail의 xml 선언과 최상위 노드는 무시됩니다.
[참고 4] 주문에 여러 세부정보가 있을 수 있으므로 여기서는 orderdetail 부분을 정의합니다. , 따라서 세부 사항을 시작하도록 설정해야 합니다. 즉, 주기입니다.
최종 생성된 파일은 다음과 같습니다
<trans> <transdetail> <order><date>20080101</date></order> <orderdetail><product>甲</product></orderdetail> <orderdetail><product>已</product></orderdetail> </transdetail> <transdetail> <order><date>20080102</date></order> <orderdetail><product>甲</product></orderdetail> <orderdetail><product>丙</product></orderdetail> </transdetail> </trans>
참고: xml 인터페이스 파일을 디자인하라는 요청을 받은 경우 반드시 사용자의 편의를 고려하세요
위 내용은 Powerbuilder의 xml 애플리케이션 코드 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!