一. xml是被设计用来传输和存储数据,不用来做任何行为,或表现。

二. xml语法类似html语法,但是有几点不同,我将其列举出来。

         1.xml标签必须是封闭的      <p>....</p>对       <p>....错

         2.xml标签对大小写敏感      <name>....</name> 对       <Name>....</name>错

         3.xml必须正确嵌套            <p><h>.....</h></p>对       <p><h>.....</p></h>错

         4.xml文档必须有根元素      <root><p>...</p><name>...</name></root>

         5.xml的属性值必须加引号   <note ​​date="08/08/2008"​​>.....</note>

         6.如果你把字符 "<" 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。 <message>if salary ​​&lt;​​ 1000 then</message>

         7. 在 XML 中,有 5 个预定义的实体引用:  &lt; < 小于 ;  &gt; > 大于  ;   &amp; & 和号  ;  &apos; ' 单引号   ;  &quot; " 引号  ;

三.xml一些语法规范。

         1.xml中的注释       <!-- This is a comment -->

         2. 在xml中空格会被保留

         3.xml标签命名规则 不能以标点符号开始,不能以空格,xml(XML/Xml/XMl...)任何形式开始。

         4.xml标签中尽量避免属性的使用。




JavaScript读取xml文件。



 



xml 总结_删除节点

<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的send是传递参数用的,但是只有在使用post方式提交请求的时候才有用,这是ajax的基础知识
// 如下:
// xmlhttp.open("post",url,true);
// ...
// xmlhttp.send("data=data&data2=data2");
//
// 用get的话一般就是:
// xmlhttp.open("get",url,true);
// ...
// xmlhttp.send(null);

xmlhttp.open("get","XMLFile1.xml",false); // XMLFile1.xml为要读取的xml文件路径
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; //xml为返回文档

x=xmlDoc.getElementsByTagName("CD"); //获取节点为CD的xml文档
var str="";
for(i=0;i<x.length;i++)
{
str+=x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue;
}
document.write(str);
</script>


xml 总结_删除节点



 JavaScript操作xml文件。



 



xml 总结_删除节点

<script src="js/loadXMLDoc.js" type="text/javascript"></script>  <!--这个js w3school上面有只有一个方法-->
<script type="text/javascript">
if(window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("get","XMLFile1.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

x=xmlDoc.getElementsByTagName("CD");
var str="";
//改变节点值,属性
x[0].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue="2b"; //改变节点值
x[0].getElementsByTagName("TITLE")[0].setAttribute("name","456"); //改变节点属性值
x[0].getElementsByTagName("ARTIST")[0].getAttributeNode("name").nodeValue="789"; //改变节点属性的值


//删除节点值,属性
var pn=x[0].getElementsByTagName("TITLE").length; //删除前第一个CD节点中title节点的个数
y=x[0].getElementsByTagName("TITLE")[1];
x[0].removeChild(y); //删除节点
x[0].parentNode.removeChild(x[0]); //删除自身节点
x[0].getElementsByTagName("TITLE")[0].removeAttribute("name"); //删除节点属性
var Ln=x[0].getElementsByTagName("TITLE").length; //删除后第一个CD节点中title节点的个数


//替换节点
x[0].getElementsByTagName("TITLE")[0].childNodes[0].replaceData(0,2,"123") //把节点的前两个字符替换为"123"
//创建一个 book 元素、一个 title 元素,以及一个 text 节点
newNode=xmlDoc.createElement("TITLE");
newTitle=xmlDoc.createElement("NAME");
newText=xmlDoc.createTextNode("Hello World");
//向 title 节点添加文本节点
newTitle.appendChild(newText);
//向 book 节点添加 title 节点
newNode.appendChild(newTitle);
y=x[0].getElementsByTagName("TITLE")[0];
//用这个新节点替换第一个 book 节点
x[0].replaceChild(newNode,y);


//获取节点值,属性
str=x[0].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue; //获取节点值
str+="---------"+x[0].getElementsByTagName("TITLE")[0].getAttribute("name"); //获取属性值
str+="---------"+x[0].getElementsByTagName("TITLE")[0].getAttributeNode("name").nodeValue; //获取属性值
str+="---------"+x[0].getElementsByTagName("ARTIST")[0].getAttribute("name");

function aa(){
alert(str+"---删除前: "+pn+"-----删除后: "+Ln);
}
</script>


xml 总结_删除节点



c#操作xml文件。



 



xml 总结_删除节点

using System.Xml;

namespace xml初探
{
public partial class Cshap操作xml : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(@"G:\xincaifu\asp.net技术点测试\xml初探\books.xml");
XmlElement theBook = null, theElem = null, root = null;
root = xmldoc.DocumentElement;


//创建新建一个CD
theBook = xmldoc.CreateElement("book");

theElem = xmldoc.CreateElement("name");
theElem.InnerText = "新书";
theBook.AppendChild(theElem);

theElem = xmldoc.CreateElement("price");
theElem.InnerText = "20";
theBook.AppendChild(theElem);

theElem = xmldoc.CreateElement("memo");
theElem.InnerText = "新书更好看。";
theBook.AppendChild(theElem);

root.AppendChild(theBook);

Response.Write("--- 新建一本书开始 ----");
Response.Write(root.OuterXml+"</BR>");

//--- 新建一本书完成 ----

//--- 下面对《哈里波特》做一些修改。 ----
//--- 查询找《哈里波特》----
theBook = (XmlElement)root.SelectSingleNode("/books/book[name='哈里波特']");
Response.Write("--- 查找《哈里波特》 ----");
Response.Write(theBook.OuterXml);

//--- 此时修改这本书的价格 -----
theBook.GetElementsByTagName("price").Item(0).InnerText = "15";//getElementsByTagName返回的是NodeList,所以要跟上item(0)。另外,GetElementsByTagName("price")相当于SelectNodes(".//price")。
Response.Write("--- 此时修改这本书的价格 ----");
Response.Write(theBook.OuterXml);

//--- 另外还想加一个属性id,值为B01 ----
theBook.SetAttribute("id", "B01");
Response.Write("--- 另外还想加一个属性id,值为B01 ----");
Response.Write(theBook.OuterXml);
//--- 对《哈里波特》修改完成。 ----

//--- 再将所有价格低于10的书删除 ----
theBook = (XmlElement)root.SelectSingleNode("/books/book[@id='B02']");
Response.Write("--- 要用id属性删除《三国演义》这本书 ----");
Response.Write(theBook.OuterXml);
theBook.ParentNode.RemoveChild(theBook);
Response.Write("--- 删除后的XML ----");
Response.Write(xmldoc.OuterXml);

//--- 再将所有价格低于10的书删除 ----
XmlNodeList someBooks = root.SelectNodes("/books/book[price<10]");
Response.Write("--- 再将所有价格低于10的书删除 ---");
Response.Write("--- 符合条件的书有 " + someBooks.Count + "本。 ---");

for (int i = 0; i < someBooks.Count; i++)
{
someBooks.Item(i).ParentNode.RemoveChild(someBooks.Item(i));
}
Response.Write("--- 删除后的XML ----");
Response.Write(xmldoc.OuterXml);

xmldoc.Save(@"G:\xincaifu\asp.net技术点测试\xml初探\XMLFile2.xml");//保存到XMLFile2.xml


}
}
}


xml 总结_删除节点


 



C#操作xml增删改查类




xml 总结_删除节点

using System.Xml;

namespace PuTianCheng
{
/// <summary>
/// XmlHelper 的摘要说明
/// </summary>
public class XmlHelper
{
public XmlHelper()
{
}

/// <summary>
/// 读取数据
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时返回该属性值,否则返回串联值</param>
/// <returns>string</returns>
/**************************************************
* 使用示列:
* XmlHelper.Read(path, "/Node", "")
* XmlHelper.Read(path, "/Node/Element[@Attribute='Name']", "Attribute")
************************************************/
public static string Read(string path, string node, string attribute)
{
string value = "";
try
{
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
value = (attribute.Equals("") ? xn.InnerText : xn.Attributes[attribute].Value);
}
catch { }
return value;
}

/// <summary>
/// 插入数据
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="element">元素名,非空时插入新元素,否则在该元素中插入属性</param>
/// <param name="attribute">属性名,非空时插入该元素属性值,否则插入元素值</param>
/// <param name="value">值</param>
/// <returns></returns>
/**************************************************
* 使用示列:
* XmlHelper.Insert(path, "/Node", "Element", "", "Value")
* XmlHelper.Insert(path, "/Node", "Element", "Attribute", "Value")
* XmlHelper.Insert(path, "/Node", "", "Attribute", "Value")
************************************************/
public static void Insert(string path, string node, string element, string attribute, string value)
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
if (element.Equals(""))
{
if (!attribute.Equals(""))
{
XmlElement xe = (XmlElement)xn;
xe.SetAttribute(attribute, value);
}
}
else
{
XmlElement xe = doc.CreateElement(element);
if (attribute.Equals(""))
xe.InnerText = value;
else
xe.SetAttribute(attribute, value);
xn.AppendChild(xe);
}
doc.Save(path);
}
catch { }
}

/// <summary>
/// 修改数据
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时修改该节点属性值,否则修改节点值</param>
/// <param name="value">值</param>
/// <returns></returns>
/**************************************************
* 使用示列:
* XmlHelper.Insert(path, "/Node", "", "Value")
* XmlHelper.Insert(path, "/Node", "Attribute", "Value")
************************************************/
public static void Update(string path, string node, string attribute, string value)
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
XmlElement xe = (XmlElement)xn;
if (attribute.Equals(""))
xe.InnerText = value;
else
xe.SetAttribute(attribute, value);
doc.Save(path);
}
catch { }
}

/// <summary>
/// 删除数据
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时删除该节点属性值,否则删除节点值</param>
/// <param name="value">值</param>
/// <returns></returns>
/**************************************************
* 使用示列:
* XmlHelper.Delete(path, "/Node", "")
* XmlHelper.Delete(path, "/Node", "Attribute")
************************************************/
public static void Delete(string path, string node, string attribute)
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
XmlElement xe = (XmlElement)xn;
if (attribute.Equals(""))
xn.ParentNode.RemoveChild(xn);
else
xe.RemoveAttribute(attribute);
doc.Save(path);
}
catch { }
}
}
}


xml 总结_删除节点