XML을 데이터 테이블로 직접 가져오기<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕하세요,
(올바른 형식의) XML에서 데이터 테이블로 직접 데이터 세트를 가져오려고 합니다. 이것은 Excel에서 할 수 있는 일이므로 JMP에서도 할 수 있다고 확신합니다! XML 및 최종 데이터 테이블은 아래 예와 같습니다. 테스터 또는 x,y 좌표와 같은 관련 속성이 있는 전체 로트의 모든 부분인 다이와 연결된 개별 핀에 대한 결과가 포함된 일련의 테스트가 있습니다(추측하셨겠지만 반도체 테스트 데이터를 기반으로 합니다!). . 데이터 세트는 잠재적으로 매우 길 수 있습니다.
Parse XML JSL 함수가 있다는 것을 알고 있지만 이 상황에서 어떻게 구현해야 할지 감이 잡히지 않습니다. 모든 제안을 감사하게 받았습니다!
고마워, 매튜.
<최종 테스트>
<많은 lot_id="BLAH" tester_type="J750">
<다이 die_id="1" die_x="1" die_y="1">
<테스트 test_name="TEST1" 단위="A">
<핀 pin_name="ABC" 결과="1234" />
<핀 pin_name="DEF" result="2345" />
<테스트 test_name="TEST2" 단위="A">
<핀 pin_name="XCV" 결과="414" />
<핀 pin_name="VBN" 결과="1351" />
<다이 die_id="2" die_x="3" die_y="4">
<테스트 test_name="TEST1" 단위="A">
<핀 pin_name="ABC" 결과="5433" />
<핀 pin_name="DEF" 결과="4321" />
<테스트 test_name="TEST2" 단위="A">
<핀 pin_name="XCV" 결과="6856" />
<핀 pin_name="VBN" 결과="5345" />
| lot_id | tester_type | die_id | die_x | 죽다 | test_name | 단위 | pin_name | 결과 |
| 블라 | J750 | 1 | 1 | 1 | 테스트1 | ㅏ | 알파벳 | 1234년 |
| 블라 | J750 | 1 | 1 | 1 | 테스트1 | ㅏ | 데프 | 2345 |
| 블라 | J750 | 1 | 1 | 1 | 테스트2 | ㅏ | XCV | 414 |
| 블라 | J750 | 1 | 1 | 1 | 테스트2 | ㅏ | VBN | 1351 |
| 블라 | J750 | 2 | 삼 | 4 | 테스트1 | ㅏ | 알파벳 | 5433 |
| 블라 | J750 | 2 | 삼 | 4 | 테스트1 | ㅏ | 데프 | 4321 |
| 블라 | J750 | 2 | 삼 | 4 | 테스트2 | ㅏ | XCV | 6856 |
| 블라 | J750 | 2 | 삼 | 4 | 테스트2 | ㅏ | VBN | 5345 |
Re: XML을 데이터 테이블로 직접 가져오기안녕하세요 제가 이 글을 쓸 때 오류가 발생했습니다
XML 구문 분석 ( QasFile ,
요소에 ( "인디케이터 그룹" ,
시작 태그 (
dt = 새 테이블 ( "테스트JMP테이블" ) ;
dt << 새 열 ( "N" , 숫자 ) ;
dt << 새 열 ( "그래픽 파일" , 성격 ) ;
dt << 새 열 ( "설명" , 성격 ) ;
)) ;
열 = 1 ;
요소에 ( "N" ,
시작 태그 (
만약에 ( 열 > 0 , dt << 추가 ( 1 )) ;
열 ( dt , "N" )[ 열 ()] = XML 속성 ( "N" ) ;
)) ,
EndTag ()
) ;
Re: XML을 데이터 테이블로 직접 가져오기XML(요즘 점점 더 많이 등장하는 것 같습니다)에 관심이 있는 분들을 위해 XML 가져오기 마법사가 JMP 15에서 활발히 개발 중임을 보고할 수 있습니다. 포인트 앤 클릭 선택을 허용하여 JMP가 XML의 적절한 형식을 이해하는지 확인합니다. JMP 15는 2019년 가을에 배송됩니다.
Re: XML을 데이터 테이블로 직접 가져오기Load Text File()은 XML 및 기타 텍스트 파일에 대한 Open()의 대안입니다.Re: XML을 데이터 테이블로 직접 가져오기좋은 예입니다.스크립팅 가이드나 스크립팅 인덱스보다 훨씬 이해하기 쉬웠습니다.감사해요!
Re: XML을 데이터 테이블로 직접 가져오기안녕 스탠,
나는 당신이 JMP 남자인 줄 몰랐는데, 이제 당신 이름 아래에 작은 JMP 아이콘이 보여서 그것을 설명해줍니다
귀하의 도움에 다시 한 번 감사 드리며 향후 개선 사항으로 이것을 제안하겠습니다.
문안 인사,
매튜.
Re: XML을 데이터 테이블로 직접 가져오기매트,
엄청난!도움이 되셨다니 다행입니다.우리의 지원팀은 환상적이며 질문이나 의견이 있는 경우 항상 고객을 지원할 준비가 되어 있습니다.
향후 JMP 릴리스에 기능을 추가하는 가장 좋은 방법은 다음으로 직접 요청을 제출하는 것입니다. support@jmp.com .
건배,
스탠
Re: XML을 데이터 테이블로 직접 가져오기안녕 피터,
감사합니다.예제가 도움이 되셨다니 다행입니다.스크립팅 인덱스의 예제를 사용하여 구현을 적용했습니다.스크립팅 인덱스에서 "XML"을 검색했는데 여러 결과가 반환되었습니다.
몇 가지 추가 예제를 포함하도록 설명서를 업데이트하도록 요청을 제출하겠습니다.
건배,
스탠
Re: XML을 데이터 테이블로 직접 가져오기Stan은 PARSE XML을 사용하는 정말 멋진 예입니다.어딘가에 문서화되어 있습니까?JMP 11 온라인 도움말이나 스크립팅 책에서 많은 것을 찾을 수 없습니다.
Re: XML을 데이터 테이블로 직접 가져오기안녕 스탠,
잘 작동합니다. 대단히 감사합니다! 나는 JSL이 어떻게 작동하는지 완전히 이해하기 위해 그것을 가지고 놀 것입니다.
JMP의 누군가가 이 글을 읽고 있는 경우: 올바른 형식의 XML 데이터 파일을 데이터 테이블로 직접 가져오는 옵션(데이터의 구조나 깊이를 알지 못함)은 유용한 추가 기능이 될 것입니다. 이것이 가능하거나 가능합니까?
감사해요,
매튜.
Re: XML을 데이터 테이블로 직접 가져오기안녕 매트,
현재 JMP에는 파일 열기 대화 상자를 사용하여 XML 파일을 직접 가져오는 방법이 없습니다.
그러나 JSL을 사용하여 이 작업을 수행할 수 있습니다.
이를 수행하는 한 가지 방법의 예는 아래를 참조하십시오.
아마도 다른 사람이 스크립트를 더 간결하게 단순화할 수 있습니다.
건배,
스탠
// xml 텍스트 할당
xmlTxt파일 = "\[
<최종 테스트>
<많은 lot_id="BLAH" tester_type="J750">
<다이 die_id="1" die_x="1" die_y="1">
<테스트 test_name="TEST1" 단위="A">
<핀 pin_name="ABC" 결과="1234" />
<핀 pin_name="DEF" result="2345" />
<테스트 test_name="TEST2" 단위="A">
<핀 pin_name="XCV" 결과="414" />
<핀 pin_name="VBN" 결과="1351" />
<다이 die_id="2" die_x="3" die_y="4">
<테스트 test_name="TEST1" 단위="A">
<핀 pin_name="ABC" 결과="5433" />
<핀 pin_name="DEF" 결과="4321" />
<테스트 test_name="TEST2" 단위="A">
<핀 pin_name="XCV" 결과="6856" />
<핀 pin_name="VBN" 결과="5345" />
]\"
;
// XML 구문 분석
XML 구문 분석 ( xmlTxt파일 ,
// 새 테이블 생성
요소에 ( "기말 고사" ,
시작 태그 (
dt = 새 테이블 ( "웨이퍼 테이블" ,
// 새 열 생성
새 열 ( "로트 ID" , 성격 ) ,
새 열 ( "테스터 유형" , 성격 ) ,
새 열 ( "다이 아이디" , 숫자 ) ,
새 열 ( "다이 엑스" , 숫자 ) ,
새 열 ( "다이 와이" , 숫자 ) ,
새 열 ( "테스트 이름" , 성격 ) ,
새 열 ( "유닛 이름" , 성격 ) ,
새 열 ( "핀 이름" , 성격 ) ,
새 열 ( "고정 결과" , 숫자 ) ,
) ;
열 = 1 ;
) // 끝 시작 태그, FinalTest On 요소
) ,
// 다음 요소 가져오기
요소에 ( "많은" ,
시작 태그 (
만약에 ( 열 > 0 , dt << 행 추가 ( 1 )) ;
열 ( dt , "로트 ID" )[ 열 ()] = XML 속성 ( "lot_id" ) ;
열 ( dt , "테스터 유형" )[ 열 ()] = XML 속성 ( "tester_type" ) ;
) ,
EndTag ()
) ,
요소에 ( "주사위" ,
시작태그 (
열 ( dt , "다이 아이디" )[ 열 ()] = 숫자 ( XML 속성 ( "die_id" )) ;
열 ( dt , "다이 엑스" )[ 열 ()] = 숫자 ( XML 속성 ( "die_x" )) ;
열 ( dt , "다이 와이" )[ 열 ()] = 숫자 ( XML 속성 ( "죽어" )) ;
)
) ,
요소에 ( "시험" ,
시작 태그 (
열 ( dt , "테스트 이름" )[ 열 ()] = XML 속성 ( "테스트_이름" ) ;
열 ( dt , "유닛 이름" )[ 열 ()] = XML 속성 ( "단위" ) ;
)
) ,
요소에 ( "핀" ,
시작태그 (
열 ( dt , "핀 이름" )[ 열 ()] = XML 속성 ( "핀 이름" ) ;
열 ( dt , "고정 결과" )[ 열 ()] = 숫자 ( XML 속성 ( "결과" )) ;
) ,
EndTag (
만약에 ( 열 > 0 , dt << 행 추가 ( 1 )) ;
)
)
) ;
// 추가 행 삭제
NR = N열 ( dt ) ;
dt << 행으로 이동 ( NR ) ;
dt << 선택 받기 () ;
dt << 행 삭제 ;
// 누락된 행 값 채우기
각 행에 대해 (
크 = 열 () ;
만약에 ( 크 != 1 ,
만약에 ( : 로트 ID == "" , : 로트 ID = 지연 ( : 로트 ID , 1 ) , : 로트 ID = : 로트 ID ) ;
만약에 ( : 테스터 유형 == "" , : 테스터 유형 = 지연 ( : 테스터 유형 , 1 ) , : 테스터 유형 = : 테스터 유형 ) ;
만약에 ( 누락 ( : 다이 ID ) == 1 , : 다이 ID = 지연 ( : 다이 ID , 1 ) , : 다이 ID = : 다이 ID ) ;
만약에 ( 누락 ( : 다이 엑스 ) == 1 ,: 다이 엑스 = 지연 ( : 다이 엑스 , 1 ) , : 다이 엑스 = : 다이 엑스 ) ;
만약에 ( 누락 ( : 다이 Y ) == 1 , : 다이 Y = 지연 ( : 다이 Y , 1 ) , : 다이 Y = : 다이 Y ) ;
만약에 ( : 테스트 이름 == "" , : 테스트 이름 = 지연 ( : 테스트 이름 , 1 ) , : 테스트 이름 = : 테스트 이름 ) ;
만약에 ( : 단위 이름 == "" , : 단위 이름 = 지연 ( : 단위 이름 , 1 ) , : 단위 이름 = : 단위 이름 ) ;
) ;
) ;