function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
pallipalli 

Error : ......Invalid type: XmlStreamReader.Book

Hi ,

 

how to solution this error........

 

 

static void testBookParser()
{
xml2DB1 demo = new Xml2DB1();
String str = '<Books><Book><Name>My Book 1</Name><publisher>Tata</publisher><cost>200</cost></Book>'+
'<Book><Name>My Book 2</Name><publisher>Tata</publisher><cost>300</cost></Book>'+
'<Book><Name>My Book 3</Name><publisher>Tata</publisher><cost>400</cost></Book></Books>';
XmlStreamReader callxml = new XmlStreamReader(str);
System.debug('Callxml .....'+callxml);
List<Book__c> booklist = new List<Book__c>();
for(XmlStreamReader.Book b: callxml.listrecords)
{
Book__c bc = new Book__c();
bc.Publisher__c='Tata';
bc.Name__c=b.name;
booklist.add(bc);
}
System.debug('books .......'+booklist.size());
system.debug('books........'+booklist);
if(booklist.size()>0)
{
insert booklist;
}

}

MoUsmanMoUsman

Hi palli,
Please go thru this document http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_xml_XmlStream_reader.htm
this document has good example for you.

regards 

USman

pallipalli

 hi,

 i see the example , but that error is not sloved...

please help me

 

MoUsmanMoUsman

You did not parse your xml like

XmlStreamReader testXMLReader = new XmlStreamReader(str);
list<Book> books = demo.parseBooks(testXMLReader);

Please try like this.If you are unable to parse please post your complete code I will do for you.

 

pallipalli

public class Xml2DB1
{
public class Book {
String name;
String publisher;
integer cost;
}
public List<Book> listrecords = new List<Book>();
public Book[] parseBooks(XmlStreamReader reader)
{
Book[] books = new Book[0];
while(reader.hasNext())
{
if (reader.getEventType() == XmlTag.START_ELEMENT)
{
if ('Book' == reader.getLocalName())
{
Book book = parseBook(reader);
books.add(book);
}
}
reader.next();
}
return books;
}

public Book parseBook(XmlStreamReader reader)
{
Book book = new Book();
book.publisher = reader.getAttributeValue('', 'publisher');
while(reader.hasNext())
{
if (reader.getEventType() == XmlTag.END_ELEMENT)
{
break;
}
else if (reader.getEventType() == XmlTag.CHARACTERS)
{
book.name = reader.getText();
}
reader.next();
}
return book;
}
static void testBookParser()
{
xml2DB1 demo = new Xml2DB1();
String str = '<Books><Book><Name>My Book 1</Name><publisher>Tata</publisher><cost>200</cost></Book>'+
'<Book><Name>My Book 2</Name><publisher>Tata</publisher><cost>300</cost></Book>'+
'<Book><Name>My Book 3</Name><publisher>Tata</publisher><cost>400</cost></Book></Books>';
XmlStreamReader callxml = new XmlStreamReader(str);
System.debug('Callxml .....'+callxml);
List<Book__c> booklist = new List<Book__c>();
for(XmlStreamReader.Book b: callxml.listrecords)
{
Book__c bc = new Book__c();
bc.Publisher__c='Tata';
bc.Name__c=b.name;
booklist.add(bc);
}
System.debug('books .......'+booklist.size());
system.debug('books........'+booklist);
if(booklist.size()>0)
{
insert booklist;
}

}
}...........

 

 

 

please help me

ManjunathManjunath

Hi,

 

In your code your are using XmlStreamReader.Book  (In for  loop ). XmlStreamReader class does not have any static property by name Book . Thats the reson its giving you an error.

 

Regards,

Manjunath

ManjunathManjunath

Hi,

 

Follw this link it will give you all the methods supported by the XmlStreamReader class.

http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_xml_XmlStream_reader.htm

 

Regards,

Manjunath