2017-11-13 20 views
0

데이터와 열이 동일한 페이로드에있는 Source에서 들어오는 JSON 데이터가 있습니다. 나는 XSLT에 다음과 같이 XML을 생성 할 수 JSON - 투 - XML을했다 사용 :saxon을 사용하여 JSON을 XML로 동적 변환

<?xml version="1.0" encoding="UTF-8"?> 
    <map xmlns="http://www.w3.org/2005/xpath-functions"> 
    <boolean key="allData">true</boolean> 
    <map key="factMap"> 
    <map key="T!T"> 
    <array key="rows"> 
     <map> 
      <array key="dataCells"> 
       <map> 
       <string key="label">1A</string> 
       <string key="value">1A</string> 
       </map> 
       <map> 
       <string key="label">1B</string> 
       <null key="value"/> 
       </map> 
       <map> 
       <string key="label">1C</string> 
       <string key="value">1C</string> 
       </map> 
      </array> 
     </map> 
     <map> 
      <array key="dataCells"> 
       <map> 
       <string key="label">2A</string> 
       <string key="value">2A</string> 
       </map> 
       <map> 
       <string key="label">2B</string> 
       <string key="value">2B</string> 
       </map> 
       <map> 
       <string key="label">2C</string> 
       <null key="value"/> 
       </map> 
      </array> 
     </map> 
     </map> 
<map key="detailColumnInfo"> 
    <map key="name.F1"> 
    <string key="dataType">string</string> 
    <string key="label">F1</string> 
    </map> 
    <map key="state.F2"> 
    <string key="dataType">string</string> 
    <string key="label">F2</string> 
    </map> 
    <map key="dist.F3"> 
    <string key="dataType">string</string> 
    <string key="label">F3</string> 
    </map> 
    </map> 
    </map> 

우리는 XML 출력 다음 생성해야합니다.

<Root> 
    <Rows> 
    <Row> 
    <F1> 1A </F1> 
    </F2> 
    <F3> 1C </F3> 
    </Row> 
    <Row> 
    <F1>2A </F1> 
    <F2> 2B </F2> 
    </F3> 
    </Row> 
      </Rows> 

우리는
https://stackoverflow.com/questions/47173669/dynamic-xml-generation-using-xslt#= 에서 참조를 촬영 한 후 데이터를 생성 할 수 있습니다하지만 널 (null) 태그가 예상대로 작동하지 않습니다. 누구나 이러한 동적 매핑을 구현할 수있는 가능한 해결책을 제시 할 수 있습니까?

+0

''과 같은 마크 업은 의미가 없습니다. 시작 태그는 어디에 있습니까? –

답변

1

내가 연결된 다른 질문에 대한 참조로, 추출하려는 값이 때로는 <string> 요소로 표시되고 때로는 <null> 요소로 표시된다는 사실에 관한 질문을드립니다. 어느 쪽이든 관심있는 요소는 'value'key 속성으로 구분되므로 선택 기준을 기본으로 할 수 있습니다.

즉, XPath 식에서 fn:string[@key = 'value']을 사용하는 대신 *[@key = 'value'] 또는 node()[@key = 'value']을 사용하십시오. 다른 대안이 있지만 참조 된 응답의 XSL에 이러한 변형 중 하나를 적용하면 원하는 방식으로 제시 한 입력을 처리하는 변형이 생깁니다.이 질문에 표시된 결과의 형식이 잘못되었지만 나는 의도하지 않게 행동하고있다).