네이티브 Data DOM XML

유닛: HPDFXFARuntime

메서드

dataNode.loadXML(xml, ignoreRoot = true, overwrite = false);
const compact = dataNode.saveXML();
const readable = dataNode.saveXML("pretty");

이 스크립트 메서드는 TXFAWidgetRuntime 이벤트의 datasets, dataGroup, dataValue 노드에서 쓸 수 있습니다

saveXML은 선언이 붙은 UTF-8 XML을 반환하고 선택된 노드가 문서 요소가 됩니다. 선택적 pretty 인자는 요소만 있는 콘텐츠에 들여쓰기를 추가합니다

loadXML은 잘 구성된(well-formed) XML 문서 하나를 받습니다. ignoreRoot는 그 자식들을 선택된 노드로 임포트하고, False는 소스 문서 요소를 자식으로 임포트합니다

overwrite는 임포트 전에 기존 대상 콘텐츠를 지웁니다. 기본값 False는 콘텐츠를 덧붙이고 기존 자식 식별자를 유지합니다

선택된 노드는 자기 식별자와 속성을 유지합니다. 임포트된 자식 속성과 네임스페이스 매핑도 보존됩니다

즉시 그래프와 바인딩

const record = xfa.datasets.data.main;
record.loadXML("<main><amount>42</amount></main>", true, true);
const amount = record.amount;
amount.value = "43";
if (this.parent.amount.rawValue !== "43") throw new Error("Missing binding update");

네이티브 파싱이 성공하면 임포트된 자식들이 현재 스크립트 그래프에 즉시 설치됩니다. 평범한 프로퍼티와 SOM 셀렉터는 이벤트 발행 전에 이 새 노드들을 해석합니다

데이터 셀은 바인딩된 field 별칭과 양방향으로 동기화합니다. 숨겨진 field, 새로 공급된 바인딩 대상, 기존의 자손·와일드카드·클래스·숫자 인덱스 dataRef 셀렉터도 포함입니다

스칼라를 그룹으로 임포트하면 대상의 데이터 클래스가 갱신되고 임포트된 자식 요소가 노출됩니다. 비워진 dataValue는 빈 문자열 값을 가집니다

새 데이터 요소를 임포트해도 해석되지 않은 바인딩을 위해 무관하고 모호한 데이터 리프를 할당하지 않습니다

식별자와 반복 scope

overwrite는 오래된 자식 핸들을 무효화하고 새 자식 식별자를 발행합니다. 스크립트 객체는 새로 임포트한 데이터 핸들을 붙잡고 이후 이벤트에서 쓸 수 있습니다

덧붙이기는 기존 핸들을 유지합니다. 반복 행 안에서 임포트하면 그 행의 네이티브 데이터 scope와 바인딩된 field가 바뀝니다

XML 임포트는 같은 이벤트에서 addInstance로 만든 occurrence 안에서도 동작합니다

datasets 콘텐츠를 교체하면 $data와 $record가 새 네이티브 루트로 갱신되고, 살아남은 폼·스크립트 객체 식별자가 재기준(rebase)되어 렉시컬 모듈 상태가 자기 폼 scope에 계속 붙어 있습니다

콘텐츠와 영속성

네이티브 임포트와 저장된 XDP는 평범한 텍스트, CDATA, 주석, 처리 명령을 순서대로 보존합니다

주석과 처리 명령은 평범한 Data DOM 요소 선택 밖에 남고 보이는 field 텍스트가 되지 않습니다

임포트된 노드는 다른 조상 기본 네임스페이스 아래에서도 자기 네임스페이스 URI를 유지합니다. 네임스페이스 없는 요소를 위한 명시적 빈 기본 네임스페이스도 포함입니다

외부 접두어 속성은 전개된 이름을 유지하고, Unicode 로컬 이름, 악센트 텍스트, 보충 문자는 네이티브 저장과 다시 읽기를 견딥니다

읽기 전용 saveXML은 폼 프로퍼티를 실체화하지 않고 저장된 XDP 바이트도 바꾸지 않습니다

검증과 롤백

네이티브 XML 파서는 그래프를 바꾸기 전에 well-formedness, 네임스페이스·속성 유효성, XML 문자, 선언 위치, 엔티티 문법을 검사합니다

잘못된 입력은 JavaScript에서 잡을 수 있습니다. 이전 네이티브·스크립트 그래프는 그대로 남고, 이후의 유효한 변경은 여전히 커밋할 수 있습니다

실패한 이벤트는 문서 바이트, 위젯 값, 임포트 그래프, 식별자, 스크립트 객체 렉시컬 상태를 복원합니다. 네이티브 XML 임포트가 이미 적용된 뒤의 실패도 포함입니다

각 네이티브 JavaScript 세션은 응답 리플레이를 위해 엔진을 다시 만드는 동안 실제 DLL 모듈을 유지합니다. 엔진, 컨텍스트, 저널은 독립적으로 남고, 모듈 참조는 마지막 네이티브 엔진 해체 후 해제됩니다

XML 파싱과 직렬화는 연산, 깊이, 노드, 바이트, 경과 시간 예산을 런타임의 원래 이벤트 데드라인 및 값 문자 한도와 함께 강제합니다

임포트는 외부 엔티티를 해석하거나 파일·네트워크·UI 동작을 수행하지 않습니다. 이 파서는 DTD 선언을 거부합니다

현재 범위

이 이벤트 런타임 통합은 현재 Windows Win32와 Win64를 대상으로 합니다. 포터블 Linux 런타임 통합은 아직 남아 있습니다

이 통합은 네이티브 XML 임포트와 직렬화, 현재 바인딩 재평가를 공급합니다. 독립 createNode, 임의 데이터 속성 변경, 부모 재지정, 레코드 윈도 탐색, 바인딩 predicate, 전역 바인딩 정책은 별도 객체 모델 과제로 남아 있습니다

관련 API

네이티브 Data DOM, 네이티브 Bind SOM, TXFAEventBinding, TXFAEventAction, 인터랙티브 XFA 런타임