Talend tXMLMap에서 XML을 가공할 때의 요점

5861 단어 Talend
Talend(Open Studio를 활용)에서 자주 사용하는 tXMLMap에 대해서는 습관이 되기 전에 힘들었던 점을 하나하나 기록한다.

1. Create empty element


Create empty 요소를 가짜로 설정해도 XML 확인 시 빈 노드가 생성되는 경우가 많습니다.
고장인 줄 알았는데 그냥 몰라서 적어놨어요.
값이나 속성이 빈 문자라면 노드를 생성합니다.
숫자나 속성이null이면 생성되지 않습니다.
그런 일이야.


위에서 설명한 대로 XML을 설정하면 내보낸 XML은 다음과 같습니다.
직접 대입null하면 컴파일 오류가 발생하기 때문에 상기 설정true ? null : ""에서
<root>
    <EmptyStringNode>
        <item></item> <!-- 値が空文字 -->
    </EmptyStringNode>
    <NullWithEmptyAttr dummy=""/> <!-- 属性が空文字 -->
</root>
Create empty element가 진짜라면 이렇게 됩니다.비교해 보면 일목요연하다.
<root>
    <EmptyStringNode>
        <item></item> <!-- 値が空文字 -->
    </EmptyStringNode>
    <NullNode>
        <item/> <!-- 値がnull -->
    </NullNode>
    <NullWithEmptyAttr dummy=""> <!-- 属性が空文字 -->
        <item/>
    </NullWithEmptyAttr>
    <NullWithNullAttr dummy=""> <!-- 属性がnull -->
        <item/>
    </NullWithNullAttr>
</root>

2. 멀티 루프와 All in one


XML에서 XML로 값을 직접 이동하려면 loop 요소의 위치와 All in one 설정에 주목합니다.
예를 들어 XML 전체를 한 번 복사하고 싶다고 가정하십시오. (실제 상황은 더욱 복잡할 수 있습니다.)
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <loop1> <!-- 親1に対して子3 -->
        <item>
            <A>A1</A>
            <B>B1</B>
        </item>
        <item>
            <A>A2</A>
            <B>B2</B>
        </item>
        <item>
            <A>A3</A>
            <B>B3</B>
        </item>
    </loop1>
    <loop2> <!-- 親1に対して子2 -->
        <item>
            <C>C1</C>
            <D>D1</D>
        </item>
        <item>
            <C>C2</C>
            <D>D2</D>
        </item>
    </loop2>
</root>
아래와 같이 설정하면 전부 복사할 수 있습니다.
필요한 순환 횟수는 3+2회, 총 5회입니다.결과는 All in one으로 요약됩니다.

All in one을 가짜로 설정하려고 하면 rows 5개가 생성되는지 확인할 수 있습니다.

3. 트리 모드 편집기


나 자신도 완전히 어리석은 것은 산타클로스의 존재를 잠시 눈치채지 못했다는 것이다.
그 전에 XML의 각 노드의 유형을 지정할 수 없다고 생각합니다.모든 문자열 처리?등의 오해가 있었다.

예를 들어 날짜로 식별할 수 있는 값은 위의 그림과 같이 날짜 형식으로 직접 읽힌다.
TalendDate로 갑니다.ParseDate()를 가공하지 않아도 됩니다.(해봤다.)

4. 사은품: Doocument형과 Object형의 상호 변환


예를 들어 XML 데이터를 하위 작업에 맡기려고 해도 context를 통해 Docomment형을 전달할 수 없다.
하지만 일단 Object형으로 바뀌면 맡길 수 있어요.
  • Object형 프로젝트를 context에서 준비합니다.(이 경우 xml Doc)
  • 하위 작업에서도 같은 물건을 준비한다.
  • 부모 작업 옆에 tRunJob 앞에 tJavaRow를 붙인다.
  • 를 tJavaRowcontext.xmlDoc = input_row.payload;로 대입하다.(payload는 Docoment형)
  • tRunJob을 사용하여 xml Doc를 하위 작업에 전달합니다.
  • 하위 작업의 tJavaRowoutput_row.payload = (Document)context.xmlDoc;에서 분배하고 되돌려줍니다.
  • 상위 작업:

    하위 작업:

    (이상)

    좋은 웹페이지 즐겨찾기