1.检查所要 *** 作的xml文件是否存在:
System.IO.File.Exists(文件路径及名称)
2.得到xml文件:
(1)在asp.net中可以这样得到:
XmlDocument xmlDoc = new XmlDocument()
//导入xml文档
xmlDoc.Load( Server.MapPath("xmlTesting.xml"))
//导入字符串
//xmlDoc.LoadXml("<bookStore><book id="01" price="3.5元">读者</book></bookStore>")
注:Server.MapPath("xmlTesting.xml")此时的xmlTesting.xml文件必须是在当前的解决方案里;同样可以写成完整的物理路径xmlDoc.Load (@"E:"软件学习"测试"myNoteWeb"xmlTesting.xml")
(2)在windForm中 直接用物理路径得到所要 *** 作的xml文件具体实现方法同上
3.创建xml文件:
XmlDocument xmlDoc = new XmlDocument()//创建xml文档(实例化一个xml)
XmlNode root = xmlDoc.CreateElement("bookStore")//创建根节点
//创建第1个子结点:
XmlNode bookNode = xmlDoc.CreateElement("book")
bookNode.InnerText = "读者"
//为此节点添加属性
法1:
bookPublishNode.SetAttribute("id", "01")
root.AppendChild(bookNode)
法2:
XmlAttribute xmlattribute = tempXmlDoc.CreateAttribute("price")
xmlattribute.Value = "3.5元"
tempRoot .Attributes .Append (xmlattribute )
//创建第2个根节点的子结点:
XmlNode tempBookNode = xmlDoc.CreateElement("tempbook ")
tempBookNode.InnerText ="文摘"
root.AppendChild(tempBookNode)
xmlDoc.AppendChild(root)//将根节点添加到xml文档中
try
{
xmlDoc.save(“bookInfo.xml”)//xml将保存到当前解决方案的目录下
}
catch (Exception ex)
{
MessageBox.Show(ex.Message)//显示错误信息
}
得到的xml文档如下:
<?xml version="1.0" encoding="utf-8" ?>
<bookStore>
<book id ="01" price="3.5元">
读者
</book>
<tempbook id ="02">
文摘
</tempbook >
</bookStore>
4.读取,修改xml信息
tempTesting.xml文件的内容如下:
?<?xml version="1.0" encoding="utf-8"?>
<bookStore>
<book id="01" price="3.5元">
读者
</book>
<book id="02" price="5元">
<bookname>百家讲坛</bookname>
<bookpublish>文学出版社</bookpublish>
</book>
<tempbook id="0000">漫画tempbook>
</bookStore>
(1) 得到xml文件的xml信息
XmlDocument xmlDoc = new XmlDocument()
xmlDoc.Load( Server.MapPath("xmlTesting.xml"))
XmlNode root=xmlDoc.DocumentElement
(2) 得到节点
//得到id为2book节点下的所有节点
XmlNodeList xmlNodes = root.SelectNodes("//book[@id='02']//*")
XmlNode tempNode = xmlNodes[0]//得到第一个节点
//将tempbook强制转化为XmlElement
XmlElement xmlelement = (XmlElement)root.SelectSingleNode("tempbook")
(3) 修改节点内容
XmlNode tempBook = root.SelectSingleNode("tempbook")//修改节点内容
tempBook. InnerText="漫画"
(4)得到节点的属性值并修改:
//得到节点的属性
//法1
XmlAttributeCollection attrbute= tempBook.Attributes
string bookID = attrbute[0].Value
//法2:
string bookid = tempBook.Attributes[0].Value.ToString()
//修改节点属性的值
tempBook.Attributes[0].Value = "0000"
(5)添加一个根节点
XmlNode node = xmlDoc.CreateElement("testing");
node.InnerText = "testing"
root.AppendChild(node)
(6)保存修改后的文档
xmlDoc.Save(Server.MapPath("tempTesting.xml"))
******其他:
(一)显示xml信息
1以xml文档的样式显示:xmlDoc.outerxml
2.显示各个节点
XmlNode root = xmlDoc.DocumentElement//得到根节点:
if (root.ChildNodes.Count >0)
{
XmlNode xmlnode = root.FirstChild//得到子结点:
for (int i = 0i <root.ChildNodes.Counti++)
{
MessageBox.Show(xmlnode.FirstChild .InnerText)
xmlnode = xmlnode.NextSibling或mlNode subNode2 = root.LastChild
}
}
else
MessageBox.Show("没有内容!")
(二)将数据库的信息导入为xml
XmlDocument xmlDocItem = new XmlDocument()
DataSet ds = GetDataSet(strtsql);//调用方法从数据库中得到DataSet。
xmlDocItem.LoadXml(ds .GetXml ())//导入xml中;
*****************************以下是在网络上找到的关于C# *** 作xml文件的总结***
一:创建并保存xml文件
string FileName =Application.StartupPath+"""phone.xml"
XmlTextWriter objXmlTextWriter = new XmlTextWriter(FileName,Encoding.Default)
objXmlTextWriter.Formatting = Formatting.Indented
objXmlTextWriter.Indentation = 6
objXmlTextWriter.WriteStartDocument()
objXmlTextWriter.WriteStartElement("", "PhoneBook", "")
objXmlTextWriter.WriteStartElement("", "Name", "")
objXmlTextWriter.WriteString("加菲尔德")
objXmlTextWriter.WriteEndElement()
objXmlTextWriter.WriteStartElement("", "Number", "")
objXmlTextWriter.WriteString("5555555")
objXmlTextWriter.WriteEndElement()
objXmlTextWriter.WriteStartElement("", "City", "")
objXmlTextWriter.WriteString("纽约")
objXmlTextWriter.WriteEndElement()
objXmlTextWriter.WriteStartElement("", "DateOfBirth", "")
objXmlTextWriter.WriteString("26/10/1978")
objXmlTextWriter.WriteEndElement()
objXmlTextWriter.WriteEndElement()
objXmlTextWriter.WriteEndDocument()
objXmlTextWriter.Flush()
objXmlTextWriter.Close()
这段代码在win2003ser+vs2005环境下测试通过,出来的效果很好,也比较容易理解,我一般就是用这段代码创建XML文件。
二、读取、修改XML文件的某个节点的值
string path = "phone.xml"
XmlDocument doc = new XmlDocument()
doc.Load(path)
//读所有节点表
XmlNamespaceManager xnm = new XmlNamespaceManager(doc.NameTable)
//读取节点值
XmlNode node = doc.SelectSingleNode("/PhoneBook/Name", xnm)//node.InnerText 就是读取出来的值
//修改节点值
node.InnerText="要修改的内容"
//保存修改后的内容
doc.Save(path)
首先获取想要复制节点的值,然后添加。
XElement rootNode = XElement.Load("test.xml")var result = from m in rootNode.Elements ("MM02")
where m.Attribute ("id").Value =="1"
select new
{
id=m.Attribute ("id").Value ,
fname = m.Element ("FNAM").Value ,
fval = m.Element("FVAL").Value
}
foreach (var s in result)
{
XElement x =
new XElement("MM02", new XAttribute("id",s.id ),
new XElement ("FNAM",s.fname ),
new XElement ("FVAL",s.fval)
)
XElement node = rootNode.Element("MM02")
rootNode.Element("MM02").AddAfterSelf(x)
rootNode.Save("test.xml")
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)