• XML查询


    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 += "
    " + 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 += "
    " + 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

  • 相关阅读:
    centos7下配置时间同步服务器
    交换机简单配置(转)
    ubuntu16.04安装docker CE
    docker下使用DB2
    iptables之centos6版本详解
    iptables之centos6版本常用设置
    iptables介绍iptables和netfilter
    git的使用学习(九)搭建git服务器
    js 图片预览
    ps -ef | grep java 查看所有关于java的进程
  • 原文地址:https://www.cnblogs.com/simen-tan/p/5410865.html
Copyright © 2020-2023  润新知