Hi Luke
You need to use the Join component. I've mocked this up to demonstrate.
Sample Data
<?xml version="1.0" encoding="utf-8"?>
<!-- Created with Liquid Studio 2018 (https://www.liquid-technologies.com) -->
<RootElement>
<TCP_IP>
<ResourceID>1</ResourceID>
<IP_Address>1.1.1.1</IP_Address>
<Mac_Address>xxxx</Mac_Address>
</TCP_IP>
<TCP_IP>
<ResourceID>1</ResourceID>
<IP_Address>2.2.2.2</IP_Address>
<Mac_Address>yyyy</Mac_Address>
</TCP_IP>
<TCP_IP>
<ResourceID>2</ResourceID>
<IP_Address>3.3.3.3</IP_Address>
<Mac_Address>zzzz</Mac_Address>
</TCP_IP>
<OS_Details>
<Resourceid>1</Resourceid>
<OperatingSystem>Window</OperatingSystem>
<Edition>10</Edition>
</OS_Details>
<OS_Details>
<Resourceid>2</Resourceid>
<OperatingSystem>Debian</OperatingSystem>
<Edition>7</Edition>
</OS_Details>
</RootElement>
Working through the new Data Mapper wizard, it will infer an XSD from the sample data, and you will need to define the structure of the CSV file as you work through the wizard.
You can then use the join component as shown. Basically for every 'Table A' it will find all the 'Table B' entries where the join values match.
The resulting CSV looks like this
1,Window,1.1.1.1
1,Window,2.2.2.2
2,Debian,3.3.3.3
NOTE: You would need to use the Concat function if you want to combine the OS and the edition into a single entry.