zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    安装kali中的一些常用工具和firefox的插件
    kali定制
    熟悉BASH命令
    kali中各目录的作用
    kali中netspeed的安装方法
    kali中常用的ctf工具
    【学生党必看】大学里,你的六个重要选择【转载】
    kali持久加密USB的制作
    elasticsearch _search结果解析
    Springboot整合Elasticsearch报错availableProcessors is already set to [4], rejecting [4]
  • 原文地址:https://www.cnblogs.com/simen-tan/p/5410865.html
Copyright © 2011-2022 走看看