C# XPath Problems
-
Hi, I read from this tutorial at codeproject Question A: http://www.codeproject.com/csharp/GsXPathTutorial.asp regarding xpath.. but i try to apply in my situation, and can't get it work... just say this is my xml file: Device.xml ========= Titan123 Titan Suprema 13 BBB Hardware BBB DH 6 In my C# code, string devicePath = Application.StartupPath + @"\device.xml"; // open XmlTextReader ... int nMaxId = 0; // get maximum devices within XML script while(xmlDevice.Read()) { if (xmlDevice.IsStartElement() && xmlDevice.Name == "Device") { int nId = Int32.Parse(xmlDevice.GetAttribute("id")); if (nMaxId < nId) nMaxId = nId; } } } // Execute XPath here XPathDocument xdoc = new XPathDocument(devicePath); XPathNavigator nav = xdoc.CreateNavigator(); // loop into 2 possible devices and extract particular information for (int i = 1; i < nMaxId + 1; i++) { XPathNodeIterator nodeItor = nav.Select( "DeviceList/Device[@id='" + i + "']/Connection"); nodeItor.MoveNext(); TraverseChildren(nodeItor); } ... // from the article private void TraverseChildren(XPathNodeIterator nodeItor) { XPathNodeIterator igor = nodeItor.Clone(); igor.Current.MoveToFirstChild(); bool more = false; do { PrintNode(igor.Current); more = igor.Current.MoveToNext(); }while(more); } private void PrintNode(XPathNavigator nav) { MessageBox.Show("Value: " + nav.Value + " Type : " + nav.NodeType.ToString()); } From this solution: i get this instead: MessageBox1 - Value: Titan123 Titan Suprema 13BBB Hardware BBB DH 6 MessageBox2 - Value: Titan123 Titan Suprema 13BBB Hardware BBB DH 6 (repeat the same message - why?) Any help please? I want to get the Output of this: MessageBox1 - Value: Titan123 Titan Suprema 13 MessageBox2 - Value: BBB Hardware BBB H 6 Question B: By the way ho
-
Hi, I read from this tutorial at codeproject Question A: http://www.codeproject.com/csharp/GsXPathTutorial.asp regarding xpath.. but i try to apply in my situation, and can't get it work... just say this is my xml file: Device.xml ========= Titan123 Titan Suprema 13 BBB Hardware BBB DH 6 In my C# code, string devicePath = Application.StartupPath + @"\device.xml"; // open XmlTextReader ... int nMaxId = 0; // get maximum devices within XML script while(xmlDevice.Read()) { if (xmlDevice.IsStartElement() && xmlDevice.Name == "Device") { int nId = Int32.Parse(xmlDevice.GetAttribute("id")); if (nMaxId < nId) nMaxId = nId; } } } // Execute XPath here XPathDocument xdoc = new XPathDocument(devicePath); XPathNavigator nav = xdoc.CreateNavigator(); // loop into 2 possible devices and extract particular information for (int i = 1; i < nMaxId + 1; i++) { XPathNodeIterator nodeItor = nav.Select( "DeviceList/Device[@id='" + i + "']/Connection"); nodeItor.MoveNext(); TraverseChildren(nodeItor); } ... // from the article private void TraverseChildren(XPathNodeIterator nodeItor) { XPathNodeIterator igor = nodeItor.Clone(); igor.Current.MoveToFirstChild(); bool more = false; do { PrintNode(igor.Current); more = igor.Current.MoveToNext(); }while(more); } private void PrintNode(XPathNavigator nav) { MessageBox.Show("Value: " + nav.Value + " Type : " + nav.NodeType.ToString()); } From this solution: i get this instead: MessageBox1 - Value: Titan123 Titan Suprema 13BBB Hardware BBB DH 6 MessageBox2 - Value: Titan123 Titan Suprema 13BBB Hardware BBB DH 6 (repeat the same message - why?) Any help please? I want to get the Output of this: MessageBox1 - Value: Titan123 Titan Suprema 13 MessageBox2 - Value: BBB Hardware BBB H 6 Question B: By the way ho
If you have a question about an article here on this site, then use the message board at the bottom of the article. That's what the article-specific message boards are for. http://www.codeproject.com/csharp/GsXPathTutorial.asp[^] This posting is provided "AS IS" with no warranties, and confers no rights. Software Design Engineer Developer Division Sustained Engineering Microsoft [My Articles] [My Blog]