Deserialize XML
i. xml 파일을 읽어 XDocument 형식으로 치환
ii. 전반적으로 코딩의 Xml 다루는 방식과 동일
iii. Get XML Nodes > XDocument 는 Node로 읽음
iv. Get XML Node Attributes > Node는 Attributes 로 읽음
v. 노드를 잡는 부분부터는 System.Xml.XPath 네임스페이스가 별도로 필요
![]() |
![]() |
우선 xml 을 읽는 방법은 이전 포스트에서 다루었다
MTDING :: Read/Write Text File - (유용했던) Activity (tistory.com)
Read/Write Text File - (유용했던) Activity
i. 다양한 형식(txt, xml, json 등등)의 텍스트 파일 저장 및 불러오기 ii. 코딩 중 ReadStream, WriteStream의 역할 iii. 인코딩(ANSI 기본)을 자유자제
mtding00.tistory.com
우선 xml의 인코딩 및 문서 속성은 Read 액티비티로 다루어주면 되겠다. 해당 글에서는 편의를 위해 아무 속성 없는 쌩 데이터 xml 을 가지고 진행하겠다.
스트링을 벗어낸 데이터가 XDocument 로 전환된다. 여기서부터도 모든 노드에 접근 가능해서 별도 구현 없이 줄코딩으로 원하는 데이터 혹은 순회 접근이 가능하다.
![]() |
![]() |
![]() |
Get XML Nodes (Attributes)
여기서부턴 System.Xml.XPath 네임스페이스가 필요하며, 아마 Xml 액티비티가 정상적으로 동작한다면 네임스페이스 추가는 자동으로 이루어질 것이다. 안 되면 새로고침이나 파일을 다시 여는 것을 추천한다. 위에서 처리된 XDocument를 Node단위로 한 번 더 나누어 보관할 수 있다.
![]() |
![]() |
![]() |
현재 단계는 .xml 파일 > XDocument > XNode 까지 온 상황이다.
앞서 말했듯이 XDocument만으로 모든 데이터에 접근 가능하지만, XNode로 탈 경우 Attribute까지 더 다룰 수 있게 된다. 단, Attribute는 xml에 표시되지 않았을 경우 크기가 0인 상태로 반환하게 된다. > 순회를 돌려도 크기가 0이기 때문에 순회하지 않는다. 즉, 속성 데이터값이 없어도 Null 상태는 아니다.
원래, Xml을 역직렬화(Deserialze)를 하려면 Xml 데이터에 맞춰 클래스를 제작하여 진행했던 것으로 기억한다. 하지만, UiPath 개발 환경 상 사용자에 맞는 클래스 제작은 어렵기 때문에 LINQ에 있는 Xml 역직렬화를 그대로 가져온 것 같다.
UiPath XML Deserialize 결론
XElement 데이터 순회 접근 > Elements("Name")로 기준 배열 잡기 > Element("Name").Value로 요소 내 데이터 가져오기
XNode 데이터 순회 접근(XPath 네임스페이스 필요) > Get XML Nodes 로 산출된 변수 그대로 기준 배열 > XPathSelectElement("Name").Value로 요소 내 데이터 가져오기
Deserialize JSON
![]() |
![]() |
![]() |
Json 파일은 UiPath 프로젝트 파일을 사용했다.
Json은 xml과 다르게 하나의 인터페이스만 제공한다. 그런데 짜피 여기서 제공해주는 인터페이스도 LINQ고 LINQ에 대해선 알 것만 아는 상황(ㅠㅠ)이라 안에 Json 관련 인터페이스가 더 존재할 수도 있다. 하지만, 일단 나는 현 시점에서 딱 하나밖에 몰라 이걸 기록한다.
SelectToken > 단일, SelectTokens > 배열
Json은 단일, 배열 둘 중 하나의 경우로 저장되어서 그 두 개를 받아주는 인터페이스도 두 개다. 또한, 아예 배열로 이루어진 Json 파일을 읽어주는 액티비티도 존재한다.
Deserialize JSON Array
![]() |
![]() |
![]() |
Json이 아예 배열로 된 경우 액티비티 활용
배열로 된 파일은 Array 액티비티로 읽어야 한다. 그리고 해당 배열 변수를 순회시켜 데이터에 접근할 수 있다. 역시 해당 접근 함수는 SelectToken이다.
![]() |
![]() |
![]() |
![]() |
당연하지만 배열 파일에 단일 액티비티, 단일 파일에 배열 액티비티를 사용할 경우 에러가 발생한다.
UiPath Json Deserialize 결론
Json 단일 파일 > 단일 액티비티 || Json 배열 파일 > 배열(~ Array) 액티비티 사용
사용 후 데이터 접근 인터페이스는 SelectToken(s) 로 같음
끝으로 프로젝트 간 제이슨 파일은 많이 봤는데, Xml은 거의 못봤다. 하지만 역직렬화를 모두 지원한다는 점을 알고 있으면 좋을 것 같아 작성하게 되었다. 즉, 결론은 대중적인 xml, json 데이터파일 정도는 자체 엔진에서 액티비티를 제공해준다. xaml은 안해봐서 모르겠당...(지만 될 것 같다. 짜피 Read로 불러오면 전부 string으로 담아버리니 말이다.)
'RPA' 카테고리의 다른 글
UiPath Image 처리 (0) | 2024.08.23 |
---|---|
Activate, Set Focus - (유용했던) Activity (0) | 2024.08.23 |
Trigger Scope - (생소한) Activity (0) | 2024.08.22 |
GenericValue 자료형, Format Value (생소한) (0) | 2024.08.22 |
Modify Date - (생소한) Activity (0) | 2024.08.21 |