C# web service

This method never returns that a book is in the collection when it actually is. Can some one please tell me where I'm going wrong.

            /**
             * A method that returns the details of a book from the catalogue
             *
             * @param isbn, the ISBN of the book whose details are desired
             */
            [WebMethod]
            public string isbnQuery(string isbn)
            {
                  string str ="";
                  catalogue = new XmlTextReader(Server.MapPath("Catalogue.xml"));
            
                  while(catalogue.Read( ))
                  {                      
                        if( catalogue.Name == BOOK)
                        {
//                              if( catalogue.GetAttribute("isbn").Equals(isbn))
                              if( catalogue.GetAttribute("isbn") == isbn)
                              {
                                    str = "Title =" + catalogue.GetAttribute("title")+ ", ";
                                    str += "Author =" + catalogue.GetAttribute("author") +", ";
                                    str += "Genre =" + catalogue.GetAttribute("genre");
                              }
                              else
                              {
                                    str = "Book not found";
                              }
                        }                        
                  }//while
                  catalogue.Close();
                  return str;
            }
richardmojoAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

zeus40Commented:
You are not exiting out of the loop when you find the book....

In it's current state, you are essentially getting this in a loop:

Book not found
Book not found
Title = Title, Author = Author, Genre = Genre
Book not found
Book not found   <-Last entry is returned

And of course Book not found is the last value placed in str

When you find the ISBN == ISBN, then just return str
Example (I am not a C# programmer, but I can understand what you have here)

**
           * A method that returns the details of a book from the catalogue
           *
           * @param isbn, the ISBN of the book whose details are desired
           */
          [WebMethod]
          public string isbnQuery(string isbn)
          {
               string str ="";
               catalogue = new XmlTextReader(Server.MapPath("Catalogue.xml"));
         
               while(catalogue.Read( ))
               {                      
                    if( catalogue.Name == BOOK)
                    {
//                         if( catalogue.GetAttribute("isbn").Equals(isbn))
                         if( catalogue.GetAttribute("isbn") == isbn)
                         {
                              str = "Title =" + catalogue.GetAttribute("title")+ ", ";
                              str += "Author =" + catalogue.GetAttribute("author") +", ";
                              str += "Genre =" + catalogue.GetAttribute("genre");
                              catalogue.Close();
                              return str;

                         }
                         else
                         {
                              str = "Book not found";
                         }
                    }                    
               }//while
               catalogue.Close();
               return str;
          }
0
zeus40Commented:
Any luck with my proposed solution?
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Programming

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.