XML基础、Linq To Xml
一:创建XML
<userid="001">
<name>"aaa"</name>
<password>"***"</password>
<tel>
<!--电话号码-->
<home>62344333</home>
<mobile>1633889999</mobile>
<office>010-98883393</office>
</tel>
</user>
1.XMLTextWriter
XMLTextWriterdoc = new XMLTextWriter("user.xml",Encoding.UTF8)
Doc.Formatting = Formatting.Indented;//缩进
Doc.WriteStartDocment()
Doc.WriteStartElement("user")
Doc.WriteAttributeString("id","001")
Doc.WriteElementString("Password","***")
Doc.WriteStartElement("Tel")
Doc.WriteElementString("home","62344333")
Doc.WriteElementString("mobile","1633889999")
Doc.WriteElementString("office","010 -98883393")
Doc.WriteEndElement()
Doc.WriteEndElement()
Doc.close()
2.XMLDocument
XMLDocumentdoc=new XMLDocument();
XMLDeclarationxd = doc.CreateXMLDeclaration("1.0","UTF-8",null);
XMLElement xeuser= doc.CreateElement("user");
XmlAttribute xaId = doc.createAttribute("id");
xaId.Value="001";
XMLElementxename =doc.CreateElement("name")
xeName.InnerText="aaa";
XMLElement xepassword =doc.CreateElement("password")
xePassword.innerText="***";
XMLElement xetel=doc.CreateElement("Tel")
XMLComment xc = doc.CreateComment("电话号码")
XMLElement xehome =doc.CreateElement("home")
xeHome.innerText="62344333"
XMLElement xemobile=doc.CreateElement("mobile")
xemobile.innerText="1633889999"
XMLElement xeOffice=doc.CreateElement("office")
xeOffice.InnerText="010-98883393"
Doc.AppendChild(xd)
Doc.AppendChild(xeUser)
xeUser.Attributes.Append(xaid)
xeUser.AppendChild(xename)
xeUser.AppendChild(xepassword)
xeUser.AppendChild(xetel)
xetel.AppendChild(xehome)
xetel.AppendChild(xemobile)
xetel.AppendChild(xeoffice)
Doc.Save("user.xml")
3:Xdocument
Usingsystem.xml.linq
XElement xe=new XElement("user",
newXattribute("id","001"),
new XElement("name","aaa"),
new XElement("Password","***"),
new XElement("Tel",
new Xcomment("电话号码"),
new XElement("home","62344333"),
new XElement("mobile","1633889999"),
new XElment("office","010 -98883393")))
Xdocumentxd= new Xdocument(xe);
Xd.Save("user.xml");
二:Linq To XML
XMLDocument doc = new XMLDocument();
Doc.Load("user.xml");
String xpath ="//user[@id='001']";//任意一个user
XMLNode node = doc.SelectSingleNode(xpath)
Stringname =node.ChildNodes[0].InnerText;
Stringpwd=node.ChildNodes[1].InnerText;
XMLDocument doc = new XMLDocument();
Doc.Load("user.xml");
Stringxpath ="/user/tel";
XMLNodeList nodes = doc.SelectNodes(xpath)
foreach(XMLNodenode in nodes)
{
Console.WriteLine(node.InnerText);
}
//修改 XMLDocument
XMLDocument doc = new XMLDocument();
Doc.Load("user.xml");
Stringxpath ="/user[@id='001']/tel/mobile";
XMLNode node = doc.SelectSingleNode(xpath)
node.InnerText="6666666"
doc.Save(user.xml);
//增加 XMLDocument
XMLDocument doc = new XMLDocument();
Doc.Load("user.xml");
Stringxpath ="/user/tel";
XMLNodeList nodes = doc.SelectNodes(xpath)
foreach(XMLNodenode in nodes)
{
XMLComment xc=doc.CreateComment("联系电话");
node.InsertBefore(xc,node.FirstChild)
}
doc.Save(user.xml);
//删除 XMLDocument
XMLDocument doc = new XMLDocument();
Doc.Load("user.xml");
Stringxpath ="/user/tel";
XMLNode node = doc.SelectSingleNode(xpath);
node.ParentNode.RemoveChild(node);
doc.Save(user.xml);
//Linq ToXML
Xdocmentxd =new Xdocment();
xd.Load("user.xml");
varquery=xd.descendants("user").where(x=>x.Attribute("id").Value="001").selectp.descendants("mobile");
var query = from x in xd.descendants("user")
wherex.Attribute("id").value ="001"
selectx.Descendants("mobile")
foreach(varv in query)
{
string old =v.value;
string newMob =old.PadRight(6,'0');
v.value = newMob; //修改
}
xd.save("user.xml");
varquery=xd.descendants("password").where(x=>x.Value.length>3);
var query=(from x inxd.descendants("password")
where x.value.length>3
select x).FirstorDefault;
query.remove(); //删除
xd.save("user.xml");
Xcomment xc =newXcomment("手机号码");
varquery=xd.descendants("tel").where(x=>x.parent.Attribute("id").value="001").select x.descendants("mobile");
var query= from x in xd.descendants("tel")
wherex.parent.Attribute("id").value ="001"
selectx.element("mobile")
foreach(varv in query)
{
v.AddAfterSelf(xc);//添加
}
xd.save("user.xml");