× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Here is a couple of examples based on the posted XML I copied into a STMF:

// XML-INTO FROM FILE
xmlFile = '/xmltest2.xml';

options = 'doc=file +
path=System-Link/LoginResponse +
case=any +
allowextra=yes +
allowmissing=yes';

xml-Into LoginResponse %xml(xmlFile:options);

if LoginResponse.actionSucceeded='true';
dsply LoginResponse.actionSucceeded;
retField = *on;
endif;



// Load XML from file into field
s = storeNew();
storeInz(s);
storeFromStmf(s:'/xmltest2.xml');
rpns = storeToField(s);
storeFree(s);



// XML-INTO FROM STRING
options = 'doc=string +
path=System-Link/LoginResponse +
case=any +
allowextra=yes +
allowmissing=yes';

xml-Into LoginResponse %xml(rpns:options);

if LoginResponse.actionSucceeded='true';
dsply LoginResponse.actionSucceeded;
retField = *on;
endif;


On Sun, Mar 2, 2014 at 12:53 PM, Henrik Rützou <hr@xxxxxxxxxxxx> wrote:

Chris

try this (it should work on both V4R5 and V6R1) ...

options = 'doc=string +
path=System-Link/LoginResponse +
case=any +
allowextra=yes +
allowmissing=yes';

xml-Into LoginResponse %xml(rpns:options);


On Sun, Mar 2, 2014 at 10:40 AM, Vernon Hamberg <vhamberg@xxxxxxxxxxxxxxx>wrote:

To Chris - I don't think you have the issue Peter cites. The use of
datasubf is for elements with this form -

<tagname attr="value">text data</tagname>

Note that 'text data' has no name.


You LoginResponse element has another element within it - SessionHandle
- this has to be part of your LocalResponse DS. Or you can try the
'allowextra=yes' option.

Here is something from the docs on XML-INTO options -

"If unexpected XML data is found, and 'allowextra=yes' is not specified,
the operation will fail with status 00353 (XML does not match RPG
variable)."

HTH
Vern

On 3/2/2014 2:18 AM, Peter Dow wrote:
Hi Chris,

I ran into this problem myself - at the time I was on a v5r4 machine.
Are you on v6r1 yet? See this article:


https://www.ibm.com/developerworks/community/wikis/home?lang=en#/wiki/We13116a562db_467e_bcd4_882013aec57a/page/Two%20new%20options%20for%20XML-INTO%20with%20a%20V6R1%20PTF

(or http://preview.tinyurl.com/xml-into-datasubf-countprefix) which
says:

V6R1 PTF SI34938 adds two new %XML options for the XML-INTO operation,
available for programs compiled with TGTRLS(V6R1M0) or greater. To take
advantage of this enhancement, RPG programs will have to be recompiled
with PTF SI34941.

The new options are

* datasubf
* countprefix


The/datasubf/option enables the XML-INTO operation to handle XML
elements in the following form:

<tagname attr="value">text data</tagname>

The/countprefix/option provides a way to detect the number of subfields
and subfield array elements which were set by the XML-INTO operation. It
reduces the need to specify the allowmissing=yes option.



--
*Peter Dow* /
Dow Software Services, Inc.
909 793-9050
petercdow@xxxxxxxxx <mailto:petercdow@xxxxxxxxx>
pdow@xxxxxxxxxxxxxx <mailto:pdow@xxxxxxxxxxxxxx> /




On 3/1/2014 4:02 PM, Wyatt, Chris (FGWA-IL) wrote:
Hello all,

This has me tearing my hair out on a weekend... Boo.

I'm attempting to parse some XML. I'm trying to use the new(er)
opcodes as opposed to the old string methods. I thought it was/is the most
straightforward you can imagine...

I'm trying to pull the 'true' value out of the LoginResponse attribute.

Here's the XML... (Yes, it's MAPICS)

<?xml version='1.0' encoding='UTF-8'?>
<System-Link version='1.0' hostVersion='1.0'>
<LoginResponse actionSucceeded='true'>
<SessionHandle value='-3369e2f8:1445eea302e:-799f'/>
</LoginResponse>
<Response sessionHandle='-3369e2f8:1445eea302e:-799f'
workHandle='-3369e2f8:1445eea302e:-799e' systemTimestamp='2014-02-28
20:54:41.668' systemTimeZoneOffset='-6:00'>
<UpdateResponse name='updateObject_ItemRevision'
actionSucceeded='true'/>
</Response>
</System-Link>

Here's my code... (variable "rpns" is my xml)

D* Local fields
D retField S N inz(*off)
D LoginResponse DS qualified
D action...
D Succeeded 10

/FREE

// was the login request successful?
xml-into LoginResponse
%xml(rpns:'path=System-Link/LoginResponse +
case=any doc=string');
if LoginResponse.actionSucceeded='true';
retField = *on;
ENDIF;

I'm getting this error...

The XML document does not match the RPG variable; reason code 1.

Cause . . . . . : While parsing an XML document, the parser found
that the
XML document does not correspond to RPG variable loginresponse and
the
options do not allow for this. The reason code is 1. The exact
subfield for
which the error was detected is loginresponse. The options are
"path=System-Link/LoginResponse case=any doc=string". The XML
document name
is *N; *N indicates that the XML document was not an external file.

In the process of trial and error, I've also received reason code 4
and 5.

What am I doing wrong?!? I've messed with the path, the options, the
DS. It's making me crazy.

Thank you for your help.

Christopher Wyatt





---
This email is free from viruses and malware because avast! Antivirus
protection is active.
http://www.avast.com

--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L)
mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.




--
Regards,
Henrik Rützou

http://powerEXT.com <http://powerext.com/>






As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.