How do I use the XML Advanced Connector to return cdata?

Options

The data I'm trying to pull in is from a URL and every piece of data is wrapped in cdata tags so Domo isn't recognizing it or returning any data. Is there a way I can pull this in?

Here is a sample of how the data is set up in the XML:

<allData>
	<unit>
		<Name>
		<![CDATA[ Group A ]]>
		</Name>
		<number>
		<![CDATA[ 123456789 ]]>
		</number>
		<Code>
		<![CDATA[ 87654321 ]]>
		</Code>
		<Title>
		<![CDATA[ This is a title ]]>
		</Title>
	</unit>
	<unit>
		<Name>
		<![CDATA[ Group B ]]>
		</Name>
		<number>
		<![CDATA[ 223456780 ]]>
		</number>
		<Code>
		<![CDATA[ 98765432 ]]>
		</Code>
		<Title>
		<![CDATA[ This is another title ]]>
		</Title>
	</unit>
</allData>

Best Answer

  • jessymarteen
    jessymarteen Member
    Answer ✓
    Options

    I figured out way to resolve this so sharing in case someone else has the same issue!

    DO YOU REQUIRE ADDITIONAL OPTIONS? select Yes

    ENTER XPATH EXPRESSION

    The only XPATH expressions that would work for me was to specify the child nodes to import (example: //Name). I couldn't include the path (example: //allData/unit/Name would not work).

    In order to get all the columns of data I wanted to pull in from the XML, I had to use this:
    //*[self::Name | self::number | self::Code | self::Title ]

    Save, Run, then my columns and rows populated!

Answers

  • Sam_Arigato
    Options

    Hi Jessy,

    Have you tried all three built-in Parsers?

    You may need to use the X Path functionality that's under the 'additional options' drop-down in the details section of your connector. The link below may be helpful to you as well - I am not able to recreate your problem because we don't have an example dataset.

    https://stackoverflow.com/questions/568315/how-do-i-retrieve-element-text-inside-cdata-markup-via-xpath

    Hope this helps!

    Samantha

    Brought to you by Arigato Analytics.

  • jessymarteen
    Options

    Hi Samantha, thank you for your response!

    I have tried all three parsers and each return the columns (example: "allData_unit_Name", "allData_unit_number", etc) but not the rows of data.

    As far as utilizing the xpath field goes, I have tried several combinations of things like the below but none have worked:

    • //allData/unit/text()
    • //allData/unit/Name/text()
    • //*/*/*/text()
    • //text()
    • etc.

    Every example I'm finding online is only for returning one child node with Cdata, not multiple as in my example above. Is that possibly why the solution you linked to isn't working for me?

  • jessymarteen
    jessymarteen Member
    Answer ✓
    Options

    I figured out way to resolve this so sharing in case someone else has the same issue!

    DO YOU REQUIRE ADDITIONAL OPTIONS? select Yes

    ENTER XPATH EXPRESSION

    The only XPATH expressions that would work for me was to specify the child nodes to import (example: //Name). I couldn't include the path (example: //allData/unit/Name would not work).

    In order to get all the columns of data I wanted to pull in from the XML, I had to use this:
    //*[self::Name | self::number | self::Code | self::Title ]

    Save, Run, then my columns and rows populated!