Reading an XML file into an Interface

Hi I have a need to be able to select an XML file, and use fields in it to populate an interface.


At the moment I have a simpe interface with a File Upload and a Rule Input of xmlData (Document) which the file upload saves to.

I am then kicking off a process model on submit which runs a script task.

I have activity class parameters for the fields I want and am running the following script on each one

=xpathdocument(pv!xmlFile,"/Document/Fields/Field[@Name='Department']/@Value")
Currently I just get an error on the process model when I debug:
Script Task An error occurred while evaluating expression: =xpathdocument(pv!xmlFile,"/Document/Fields/Field[@Name='Department']/@Value") (Expression evaluation error at function 'xpathdocument': An error occurred while trying to parse the XML stream.) (Data Inputs)

Does anyone know what the error is more specifically?  Am I on the right lines or is there a better way of doing this? 

  Discussion posts and replies are publicly visible

Parents
  • Hi David,

    Few recommendations that I could give to you:

    • The input for the expression should be the document ID and not the document itself
    • Check in your xml file if you have namespaces defined, in case you need, it needs to be a parameter in the expression
    • If you are trying to retrieve just the text out of one xml tag try to use “/text()” instead “/@value”

    I’m adding a sample code below, in this example only the text of the tag "content" is retrieved:

    xpathdocument(
      docId: 9999,
      expression: "/a:document/data/body/item/content/text()",
      /*sample namespace prefix just add if your input xml has ns*/
      prefix: "a:http://www.appian.com/ae/types/2009"
    )

    Regards,

    Acacio Barrado.

  • 0
    Certified Lead Developer
    in reply to Acacio Barrado
    The input for the expression should be the document ID and not the document itself

    So just FYI... in almost all cases, there will be no difference, as the "document itself" (assuming you're referring to an object of type "Appian Document") is really just the document's ID, and use cases that require the ID will almost always typecast the document down to its integer ID if necessary.

Reply Children