XML常用操作总结_AX
Ⅰ*.cs部分
using System;
using System.Collections.Generic;
using System.Text;

namespace OperateXML
{
class Program
{
static void Main(string[] args)
{
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Xml.XmlWriter xtw = new System.Xml.XmlTextWriter(sw);

xtw.WriteStartDocument();
xtw.WriteStartElement("Root");

xtw.WriteStartElement("Node_AX");
xtw.WriteAttributeString("Attribute", "AttributeValue0");
xtw.WriteString("AXzhz");//----好像WriteString()与WriteValue()没有区别----
xtw.WriteEndElement();

xtw.WriteStartElement("Node");
xtw.WriteAttributeString("Attribute", "AttributeValue1");
xtw.WriteValue("<AX1>");//-------
xtw.WriteEndElement();

xtw.WriteStartElement("Node");
xtw.WriteAttributeString("Attribute", "AttributeValue2");
xtw.WriteString("<AX>");//------
xtw.WriteEndElement();

xtw.WriteEndElement();
xtw.WriteEndDocument();

//Output:【注】一个XML文档只有一个根节点,JS中亦然.
//<?xml version="1.0" encoding="utf-16"?>
//<Root>
// <Node_AX Attribute="AttributeValue0">AXzhz</Node_AX>
// <Node Attribute="AttributeValue1"><AX1></Node>
// <Node Attribute="AttributeValue2"><AX></Node>
//</Root>
Console.WriteLine(sw.ToString());

Console.WriteLine("-----------------上生成,下使用---------------");

System.Xml.XmlDocument xmlDom = new System.Xml.XmlDocument();
xmlDom.LoadXml(sw.ToString());

//【添加一个节点】
System.Xml.XmlNode newNode = xmlDom.DocumentElement.ChildNodes[1].Clone();
newNode.Attributes["Attribute"].Value = "NewNode";
newNode.InnerText = "NewNodeText";
xmlDom.DocumentElement.AppendChild(newNode);

//【Get Attributes】
//大小写Sensitive
System.Xml.XmlNodeList xnl = xmlDom.GetElementsByTagName("Node_AX");
//AttributeValue0
Console.WriteLine(xnl[0].Attributes["Attribute"].Value);

//【取所有名为【Node】的节点集合的两种方法.】
//-----------Method1----------
xnl = xmlDom.GetElementsByTagName("Node");
for (int i = 0; i < xnl.Count; i++)
{
Console.WriteLine(xnl[i].InnerText);
}
//-----------Method2----------
xnl = xmlDom.SelectNodes("Root/Node");
for (int i = 0; i < xnl.Count; i++)
{
Console.WriteLine(xnl[i].InnerText);
}


//【Get node's Content】
//取第一个节点名为【Node】的节点
System.Xml.XmlNode xn = xmlDom.SelectSingleNode("Root/Node");
//<AX1>
Console.WriteLine(xn.InnerText);
//<AX1>
Console.WriteLine(xn.InnerXml);


//【获得相邻节点】
Console.WriteLine(xn.PreviousSibling.InnerXml);
//■■■■■■■■■■■■■■■■■■■■■■■■■■
//■【注】不要取节点的Value,是Null,暂时还不知道Why ■
//■■■■■■■■■■■■■■■■■■■■■■■■■■
Console.WriteLine(xn.PreviousSibling.Value);
Console.WriteLine(xn.NextSibling.InnerText);


//【Delete oneself,xn不是根节点】
xn.ParentNode.RemoveChild(xn);
Console.ReadLine();
}
}
}
ⅡJS部分
/*
Create by AX
2007-9-10
*/

//创建XML对象
function createXMLDOM()
{
var arrSignatures=["MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0",
"MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","Microsoft.XmlDom"];
for(var i=0;i<arrSignatures.length;i++)
{
try
{
var oXmlDom=new ActiveXObject(arrSignatures[i]);
return oXmlDom;
}
catch(e)
{
}
}
}

//调用这个Function
function OpertateXML()
{
var xmlDom=createXMLDOM();
xmlDom.async=false;
xmlDom.loadXML("<?xml version=\"1.0\" encoding=\"utf-16\"?>"
+"<Root>"
+"<Node_AX Attribute=\"AttributeValue0\">AXzhz</Node_AX>"
+"<Node Attribute=\"AttributeValue1\"><AX1></Node>"
+"<Node Attribute=\"AttributeValue2\"><AX></Node>"
+"<Node Attribute=\"NewNode\">NewNodeText</Node>"
+"</Root>");
//加载文件用
//xmlDom.load("C:\AX.xml");
//添加Node
//cloneNode(true)表示同时clone其子nodes
var newNode=xmlDom.getElementsByTagName("Node_AX")[0].cloneNode(true);
//更改Attribute
newNode.setAttribute("Attribute","newNode");
//更改节点内容
newNode.text="newNodeText";
xmlDom.documentElement.appendChild(newNode);
//取Node类型的第二个节点
var selectSecondNode=xmlDom.getElementsByTagName("Node")[1];
//取得Attribute
alert(selectSecondNode.getAttribute("Attribute"));
//取得节点内容
alert(selectSecondNode.text);
//遍历节点
var selectedTag=xmlDom.getElementsByTagName("Node");
for(var i=0;i<selectedTag.length;i++)
{
selectedTag[i].text+="Loop_AX";
}
//显示带标签的内容
alert(newNode.xml);
alert(xmlDom.xml);
//取得相邻节点
alert(selectSecondNode.previousSibling.xml);
alert(selectSecondNode.nextSibling.xml);
}
博客园→斧头帮少帮主






































































































ⅡJS部分









































































博客园→斧头帮少帮主
少帮主的斧头好久不饮血了!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架