XPath是XML的查询语言,其内容相当复杂。可以查阅www.w3.org/TR/xpath。

下面以一个实例简单了解一线XPath的查询方法:

    public partial class Form1 : Form
{
private XmlDocument document;
public Form1()
{
InitializeComponent();
document = new XmlDocument();
FileStream fs = new FileStream("xmlFileSelect.xml", FileMode.Open, FileAccess.Read);
document.Load(fs);
this.Update(document.DocumentElement.SelectNodes("."));
}
private void Update(XmlNodeList nodes)
{
if (nodes == null || nodes.Count == 0)
{
textBox1.Text = "no result";
return;
}
string text = string.Empty;
foreach(XmlNode node in nodes)
{
textBox1.Text= Format(node, text, "");
}
} private string Format(XmlNode node, string text, string indent)
{
if (node is XmlText)
{
text += node.Value;
return text;
}
if (string.IsNullOrEmpty(indent))
{
indent = "";
}
else
{
text += "\r\n" + indent;
}
if (node is XmlComment)
{
text += node.OuterXml;
return text;
}
text += "<" + node.Name;
if (node.Attributes.Count > 0)
{
AddAttribute(node, ref text);
}
if (node.HasChildNodes)
{
text += ">";
foreach (XmlNode child in node.ChildNodes)
{
Format(child, text, indent + " ");
}
if (node.ChildNodes.Count == 1 && (node.FirstChild is XmlText || node.FirstChild is XmlComment))
{
text += "\r\n" + indent + "</" + node.Name + ">";
} }
else
{
text += "/>";
}
return text;
} private void AddAttribute(XmlNode node, ref string text)
{
foreach (XmlAttribute attribute in node.Attributes)
{
text += " " + attribute.Name + "='" + attribute.Value + "'";
}
} private void button1_Click(object sender, EventArgs e)
{
try
{
XmlNodeList nodes = document.DocumentElement.SelectNodes(textBox1.Text);
Update(nodes);
}
catch (Exception error)
{
textBox1.Text = error.ToString();
} }
}

  主要实现根据输入内容检索xmlnode

XML查询的更多相关文章

  1. SQL SERVER中XML查询:FOR XML指定PATH

    SQL SERVER中XML查询:FOR XML指定PATH 前言 在SQL SERVER中,XML查询能够指定RAW,AUTO,EXPLICIT,PATH.本文用一些实例介绍SQL SERVER中指 ...

  2. SQL Server XML 查询

    [参考1] 18个小实例入门SQLServer XML查询 [参考2] 转载---SQL Server XML基础学习之<5>--XQuery(query)

  3. hibernate mapping文件中 xmlns会导致linq to xml 查询不到对应的节点

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. (转)解决mybatis的mapper.xml查询不出数据,结果一直为null问题

    背景:记录mybatis使用过程中遇到的相关问题. 解决mybatis的mapper.xml查询不出数据,结果一直为null问题 解决方案: 1 修改实体类与数据库字段名相同 2 修改sql查询语句, ...

  5. LINQ系列:LINQ to XML查询

    1. 读取XML文件 XDocument和XElement类都提供了导入XML文件的Load()方法,可以读取XML文件的内容,并转换为XDocument或XElement类的实例. 示例XML文件: ...

  6. Oracle XQuery 过滤XML查询SQL

    Oralce 支持SQL XQuery查询 一个简单示例: SELECT XMLQuery('for $i in /Videogame return $i/Type' passing by value ...

  7. sqlserver中xml查询

    DECLARE @DOC XML =' <books> <book category="C#">    <title language="e ...

  8. sqlserver2012——XML查询

    1. CREATE TABLE STUDENT { S_ID INT, S_DATA xml } INSERT INTO STUDENT VALUES { 1, '<学生信息><姓名 ...

  9. sql xml 查询指定节点值,以及节点属性值

    SELECT   top 10  [HFMBDATA].query('(/Items/Item[@ID=''tbBryj''])').value('(//TextValue)[1]','nvarcha ...

随机推荐

  1. Altium Designer(DXP)小技巧之模块化布局

    原创博客转载需注明地址 在我们用Altium Designer进行电路板的绘制的时候经常会遇到模块化布局的问题 就比如电源模块(电源芯片及其外围芯片)放在一起 传感器模块(传感器芯片及其外围芯片)放在 ...

  2. 极光推送助推视频App,打造最活跃手机新媒体平台

    移动应用能够帮助吸引更多的新用户,增加用户互动和对话.但你得让用户想起你,如何在一部手机上数十个App中脱颖而出,是考验App运营的关键之处.为了打造一个成功的App,开发者需要着眼长远,不应局限于其 ...

  3. perl 获取系统时间

    最近需要将字符串转换成时间,找了下资料,实战如下,发现时timelocal费了些时间 strftime也可在 c / c++ / awk / php 中使用,用法基本一致. 这个也不错 $time = ...

  4. perl 正则表达式之匹配

    一.用m//进行匹配 上篇用双斜线的写法表示模式,事实上是m//的简写,所谓简写,就是当用双斜线作为定界符的时候,可有省略开头的m. 不使用简写的时候,可以使用任何定界符表示模式,m().m<& ...

  5. C#:求1到100的和

    using System;public class Program    {        public static void Main()            {                ...

  6. KoaHub.js是基于 Koa.js 平台的 Node.js web 快速开发框架

    koahubjs KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Function, Class, A ...

  7. 基于Spring-WS的Restful API的集成测试

    在很多Java企业级应用中,Spring占据了非常重要的位置,这就导致了基本上的技术选型都是围绕着Spring来, 比方说笔者最近的项目需要开发一个Restful的API接口,选型的时候就说,客户架构 ...

  8. Webdriver初探

    1.启动Firefox浏览器失败 package org.coder.demo; import org.openqa.selenium.*; import org.openqa.selenium.We ...

  9. App对接支付宝移动支付功能

    前段时间看了下app对接支付宝移动支付的功能,并自己总结了下支付宝移动支付的实现流程 一.申请流程          前提是已有现成的应用. 1.  申请地址            https://b ...

  10. otool是mac自带的工具

    找了一晚上otool的安装包,到最后才发现mac自带otool