Solved

XML Document Loading

Posted on 2006-06-11
4
233 Views
Last Modified: 2010-04-16
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using MSXML2;

namespace ManipulateXML
{
    public partial class Form1 : Form
    {
        private DOMDocument40 doc;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string search = listBox1.SelectedItem.ToString();
            IXMLDOMNode nd = doc.selectSingleNode("bookstore/book[@ISBN=' " + search + " ' ]");
            MessageBox.Show(nd.text);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            doc = new DOMDocument40();
            doc.load("books.xml");
            IXMLDOMNodeList nodes;
            nodes = doc.selectNodes("bookstore/book");
            IXMLDOMNode node = nodes.nextNode();

            while (node != null)
            {
                listBox1.Items.Add(node.attributes.getNamedItem("ISBN").text);
                node = nodes.nextNode();
            }
        }
    }
}

this is a pretty simple code to understand. Button click loads an XML document called books.xml and I try to get information about the ISBN of all book nodes.
I compile and it compiles but on button click nothing happens. When i ran debugger I saw that 'while (node != null ' is a false statement. Please help
0
Comment
Question by:deersuper
  • 2
4 Comments
 
LVL 13

Expert Comment

by:dungla
ID: 16883089
Please paste your xml file here
0
 
LVL 13

Expert Comment

by:dungla
ID: 16883093
And you can use System.XML instead of MSXML2 if no special purpose.
0
 
LVL 2

Author Comment

by:deersuper
ID: 16883580
<?xml version="1.0" encoding="utf-8" ?>
<bookstore>
  <book genre="autobiography" publicationdate="1981" ISBN="1-816003-11-0">
    <title>title 1</title>
    <author>
      <first-name>ben </first-name>
      <last-name>franklin</last-name>
    </author>
    <price>899</price>
  </book>

  <book genre="novel" publicationdate="1967" ISBN="1-768503-11-0">
    <title>title 2</title>
    <author>
      <first-name>usman </first-name>
      <last-name>lakjai</last-name>
    </author>
    <price>299</price>
  </book>

  <book genre="sex" publicationdate="1381" ISBN="1-300618-11-0">
    <title>chudai</title>
    <author>
      <first-name>azam </first-name>
      <last-name>franklin</last-name>
    </author>
    <price>999</price>
  </book>
</bookstore>

the code book i am using specifically asks for using msxml2. thats why I used it !!!!!! thanks
0
 
LVL 52

Accepted Solution

by:
Carl Tawn earned 250 total points
ID: 16883983
As mentioned earlier, you'd be better off simply including the System.Xml namespace rather than using the older MSXML2.

Then you can use something more like:

        private void button1_Click(object sender, EventArgs e)
        {
            doc = new XmlDocument();
            doc.Load("C:\\Test.xml");

            XmlNodeList nodes = doc.SelectNodes("bookstore/book");

            foreach (XmlNode node in nodes)
                listBox1.Items.Add(node.Attributes["ISBN"].InnerText);
        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string search = ((ListBox)sender).SelectedItem.ToString();
            XmlNode nd = doc.SelectSingleNode("bookstore/book[@ISBN='" + search + "']");

            MessageBox.Show(nd.InnerText);
        }
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Inter…
This article aims to explain the working of CircularLogArchiver. This tool was designed to solve the buildup of log file in cases where systems do not support circular logging or where circular logging is not enabled
Are you ready to implement Active Directory best practices without reading 300+ pages? You're in luck. In this webinar hosted by Skyport Systems, you gain insight into Microsoft's latest comprehensive guide, with tips on the best and easiest way…

730 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question