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

  • 相关阅读:
    递归--练习5--noi1751分解因数
    递归--练习4--noi666放苹果
    递归--练习3--noi7592求最大公约数问题
    递归--练习2--noi6261汉诺塔
    递归--练习1--noi3089爬楼梯
    JavaScript--语法4--函数1
    JavaScript--语法3--数组
    JavaScript--练习1--99乘法表
    应用排行榜第一名脸萌仅仅是刹那的烟火
    Readprocessmemory使用方法
  • 原文地址:https://www.cnblogs.com/simen-tan/p/5410865.html
Copyright © 2011-2022 走看看