C# xml 读xml、写xml、Xpath、Xml to Linq、xml添加节点 xml修改节点

 

 #region XDocument
            //创建XDocument
            XDocument xdoc2 = new XDocument();
            XElement xel1= new XElement("AA",new XAttribute("mark","mark"));
            xel1.Add(new XElement("AA1","2"));
            xel1.Add(new XElement("AA2", "3"));
            XElement xel2 = new XElement("AA");
            xel2.Add(new XElement("AA1", "2"));
            xel2.Add(new XElement("AA2", "3"));
            xel2.Add(new XElement("AAA1", new XElement("AAA1","4")));
            XElement xel = new XElement("A");
            xel.Add(xel2, xel1);
            xdoc2.Add(xel);

            ///循环XDocument 
            foreach (XElement xElement in xdoc2.Document.Root.Elements())
            {
                //根据节点名称获取值
                string text=xElement.Element("AA1").Value;
                //string text2 = xElement.Element("AAA1").Element("AAA1").Value;
                //修改节点
                xElement.SetElementValue("AA1", "AAA2");
                //添加属性
                xElement.SetAttributeValue("name", "name");
                //设置值
                xElement.Element("AA1").SetValue("");
            }
            #endregion

            #region XmlDocument
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load("D://Pro//EGP410_5//Test//XMLFile1.xml");
            //循环XmlDocument
            XmlNodeList xmlNode= xmlDoc.DocumentElement.ChildNodes;
            foreach (XmlNode item in xmlNode)
            {
            }
            //查询
            string str = xmlDoc.DocumentElement.SelectSingleNode("DTrue").InnerText;
            str = xmlDoc.DocumentElement.SelectSingleNode("/Result/DTrue").InnerText;
            //修改
            xmlDoc.DocumentElement.SelectSingleNode("DTrue").InnerText = "DTrue";
            //获取属性
            str = xmlDoc.DocumentElement.GetAttribute("mark");
            //修改属性
            xmlDoc.DocumentElement.SetAttribute("mark", "1543286313566");
            //保存。
            xmlDoc.Save("D://Pro//EGP410_5//Test//XMLFile1.xml");

            #endregion
View Code  XDocument和XmlDocument的创建 修改 查询 属性 循环等操作

xml的读

XElement xele1 = XElement.Load(Path);  //根据路径获取xml元素

XElement xele2 = XElement.Parse("");      //根据字符串获取xml元素

 

XmlDocument doc = new XmlDocument();

doc.LoadXml(xele1.ToString());        //根据字符串获取xml文档

doc.Load(Path);                 //根据路径获取xml文档

xml的取xpath

  

 XDocument doc = XDocument.Load(Path);
 XElement root = doc.Element("DATASET").Element("BUYER_NAME");

 string text = xnode.InnerText;           //获取值(方式一)

 

 XmlNode node=doc2.SelectSingleNode("//DATASET/BUYER_NAME");     //获取单个xmlnode 不用循环

  XmlNodeList nodes = doc.SelectNodes("//A/A01/A0101");   // 双斜线表示不从根目录取(获取多个xmlnode 所以要采用循环)

  foreach (XmlNode de in nodes)
  {
        var dsd = de.InnerText;      //获取值(方式二)
  }

  xml的写包括写入备注 (linq to xml)

        public static void CreateXmlByLink()
        {
            XDocument xdoc = new XDocument(
            new XDeclaration("1.0", "utf-8", "yes"),
            new XComment("提示"),
                new XElement("root",
                    new XElement("A",
                        new XElement("A01",
                        new XElement("A0101", "货物A0101"),
                        new XComment("提示"), 
                        new XAttribute("V1", "1"),
                        new XElement("A0102", "货物A0102"),
                         new XElement("A0103",
                            new XAttribute("V1", "1"),
                             new XElement("A010301",new XAttribute("V1", "1"), "货物A010301"),
                             new XElement("A010302", "货物A010302")
                             )
                        ),
                        new XElement("A01",
                        new XElement("A0101", "货物A0101"),
                        new XElement("A0102", "货物A0102"),
                         new XElement("A0103",
                             new XElement("A010301", "货物A010301"),
                             new XElement("A010302", "货物A010302")
                             )
                             )
                        ),



                                    new XElement("B",
                        new XElement("A01",
                        new XElement("A0101", "货物A0101"),
                        new XElement("A0102", "货物A0102"),
                         new XElement("A0103",
                             new XElement("A010301", "货物A010301"),
                             new XElement("A010302", "货物A010302")
                             )
                        ),
                        new XElement("A01",
                        new XElement("A0101", "货物A0101"),     
                        new XElement("A0102", "货物A0102"),
                         new XElement("A0103",
                             new XElement("A010301", "货物A010301"),
                             new XElement("A010302", "货物A010302")
                             )
                             )
                        ),


                             new XElement("C",
                        new XElement("A01",
                        new XElement("A0101", "货物A0101"),
                        new XElement("A0102", "货物A0102"),
                         new XElement("A0103",
                             new XElement("A010301", "货物A010301"),
                             new XElement("A010302", "货物A010302")
                             )
                        ),
                        new XElement("A01",
                        new XElement("A0101", "货物A0101"),
                        new XElement("A0102", "货物A0102"),
                         new XElement("A0103",
                             new XElement("A010301", "货物A010301"),
                             new XElement("A010302", "货物A010302")
                             )
                             )
                        )
                    )
            );
            xdoc.Save(Path);
        }
View Code

 

添加节点

 

XmlNode node= doc.SelectNodes("//A/A01/A0101")[0];     //修改/添加 路径下   的第一个节点 

XmlElement no = doc.CreateElement("newNode");
no.InnerText = "新增节点1";
node.AppendChild(no);  //新增

修改、删除xml节点

foreach (XmlNode item in node)
{
XmlElement xe = (XmlElement)item ;
if (xe.GetAttribute("A") == "A01")
{
xe.SetAttribute("A","A");  //修改

xe.Remove("A");  //修改
}
}

 xml 映射到页面table(参照http://www.w3school.com.cn/tiy/t.asp?f=xmle_display_table_1)

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <style>
        .a {
            border: 1px solid red;
        }
    </style>
    <script type="text/javascript">
        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        }
        else {// code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.open("GET", "test.xml", false);
        xmlhttp.send();

        xmlDoc = xmlhttp.responseXML;

        var html = "<table border='1' class=\"a\" style=\"width:100px;height:20px\">";
        var x = xmlDoc.getElementsByTagName("CD");
        for (i = 0; i < x.length; i++) {
            html = html + "</td><td>";
            html = html + x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue;
            html = html + "</td><td>";
            html = html + x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue;

            html = html + "</td><td>";
            html = html + x[i].getElementsByTagName("COUNTRY")[0].childNodes[0].nodeValue;
            html = html + "</td></tr>";
        }
        html = html + "</table>";
        document.write(html)
    </script>
</head>
<body>
</body>
</html>
View Code

 

转载于:https://www.cnblogs.com/-hao/p/9598031.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值