First, it has come to my attention that emails from our exchange server are getting threaded incorrectly, so if this ends up in a wrong thread, instead of as a new thread, I apologize.

 

On to the issue.

 
Basically I am trying to mimic the results of: api.php?action=query&list=categorymembers&cmtitle=category:Foo

 

 

I have code that iterates over an object and extracts attributes and creates an indexed array with the relevant attributes of the element as well as other elements.

The indexed array looks like this:

$attribs = array('pageid'=>$articleID, 'ns'=>$namespaceID, 'title'=>$preFixedTitle, 'classification'=>$classString);

 

When I try calling $result->addValue( array('query’,'categorymembers'), 'cm’, $attribs ) from inside the iteration I get the error:

“Exception Caught: Internal error in ApiResult::setElement: Attempting to merge element cm“

(external to the iteration I get [as expected] the correct format, but for only the final value of $attribs)

 
If I try omitting the $name (whether by using an empty string, null, or using $attribs as $name and omitting $value) I get this error:
“Exception Caught: Internal error in ApiFormatXml::recXmlPrint: (categorymembers, ...) has integer keys without _element value. Use ApiResult::setIndexedTagName().“
 
So I tried using $result->setIndexedTagName($attribs, ‘cm’) but that doesn’t change anything.
 
I have been trying to find an example of setIndexedTagName() in use in the code, so that I can understand how it is used correctly, but I haven’t managed yet. I have read the doxygen generated docs on ApiResult, but I am still unclear on the correct usage and, more importantly, the appropriate implantation of it.
 
Can anyone here provide some insight, please? Either on a better way to mimic the output, or the correct usage of the methods in question.
 
Thank you in advance.
 
--Sean Prunka