Solved

XML Document Loading

Posted on 2006-06-11
4
231 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

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
C# Offline Apllication 5 70
Device Location 4 29
C# parent child form 5 28
Call windows 10 virtual keyboard from windows forms app 2 34
Introduction This article series is supposed to shed some light on the use of IDisposable and objects that inherit from it. In essence, a more apt title for this article would be: using (IDisposable) {}. I’m just not sure how many people would ge…
This article introduced a TextBox that supports transparent background.   Introduction TextBox is the most widely used control component in GUI design. Most GUI controls do not support transparent background and more or less do not have the…
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…

776 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