C#关于XML的一些简单用法
阅读原文时间:2023年07月09日阅读:6

  关于XML文件的用法,本文简单介绍创建、读取和增删操作 。

  1.创建有三种方法

  (1)通过XmlDocument创建,然后分级添加子目录

XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("album");
// 创建根节点
root.SetAttribute("name", "album1");
// 设置属性
doc.AppendChild(root);
// 加入到xml document
XmlElement preview = doc.CreateElement("Preview");
// 创建preview元素
preview.SetAttribute("path", "album1");
preview.SetAttribute("extension", "xpi");
preview.SetAttribute("sizew", "");
// 设置属性
preview.SetAttribute("sizeh", "");
preview.SetAttribute("totalpage", "");
root.AppendChild(preview);
// 添加到xml document
XmlElement page = doc.CreateElement("Page");
page.SetAttribute("id", "");
page.SetAttribute("text", "封面");
page.SetAttribute("bgimg", "fm.xpi");
page.SetAttribute("sizew", "");
page.SetAttribute("sizeh", "");
page.SetAttribute("totalphoto", "");
preview.AppendChild(page);

        XmlElement photo1 = doc.CreateElement("Photo");  
        photo1.SetAttribute("id", "");  
        photo1.SetAttribute("x", "");  
        photo1.SetAttribute("y", "");  
        photo1.SetAttribute("minw", "");  
        photo1.SetAttribute("minh", "");  
        photo1.SetAttribute("pwidth", "");  
        photo1.SetAttribute("pheight", "");  
        photo1.SetAttribute("image", "hard\_cover\_color.xpi");  
        page.AppendChild(photo1);

        XmlElement photo2 = doc.CreateElement("Photo");  
        photo2.SetAttribute("id", "");  
        photo2.SetAttribute("x", "");  
        photo2.SetAttribute("y", "");  
        photo2.SetAttribute("minw", "");  
        photo2.SetAttribute("minh", "");  
        photo2.SetAttribute("pwidth", "");  
        photo2.SetAttribute("pheight", "");  
        photo2.SetAttribute("image", "sampleS.xpi");  
        page.AppendChild(photo2);  
        //保存  
        doc.Save(@"album1.xml");

  doc是新建的XML文件,然后CreatElement(album)创建XML内部成员,通过SetAttribute设置其属性,在设置属性后将album添加到doc中(doc.AppendChild),这样就在doc中完整添加了一个根目录。在再次CreatElement时,根据其AppendChild的对象位置可以设置其是哪级目录下。

  (2)创建XML文件后直接通过文本形式Load其内部内容

XmlDocument xmldoc = new XmlDocument(); //创建空的XML文档
xmldoc.LoadXml("" +
"" + "" + "Oberon's Legacy" + "Corets, Eva" + "5.95" + "" + "");
xmldoc.Save("bookstore2.xml"); //保存

  (3)此方式是较为完整的创建方法,其内部各属性参数设置全面

XmlText xmltext;
XmlDocument xmldoc = new XmlDocument();

        //加入XML的声明段落  
        XmlNode xmlnode = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null);  
        xmldoc.AppendChild(xmlnode);

        //加入一个根元素  
        XmlElement xmlelem = xmldoc.CreateElement("", "bookstore", "");  
        xmltext = xmldoc.CreateTextNode("");  
        xmlelem.AppendChild(xmltext);  
        xmldoc.AppendChild(xmlelem);

        //加入一个子元素  
        XmlElement xmlelem1 = xmldoc.CreateElement("", "book", "");  
        xmltext = xmldoc.CreateTextNode("");  
        xmlelem1.AppendChild(xmltext);  
        //为子元素"book"增加两个属性  
        xmlelem1.SetAttribute("genre", "", "fantasy");  
        xmlelem1.SetAttribute("ISBN", "2-3631-4");

        xmldoc.ChildNodes.Item().AppendChild(xmlelem1);

        //创建三个子元素的子元素  
        XmlElement xmlelem2 = xmldoc.CreateElement("", "title", "");  
        xmltext = xmldoc.CreateTextNode("Oberon's Legacy");  
        xmlelem2.AppendChild(xmltext);  
        xmldoc.ChildNodes.Item().AppendChild(xmlelem1).AppendChild(xmlelem2);

        XmlElement xmlelem3 = xmldoc.CreateElement("", "author", "");  
        xmltext = xmldoc.CreateTextNode("Corets, Eva");  
        xmlelem3.AppendChild(xmltext);  
        xmldoc.ChildNodes.Item().AppendChild(xmlelem1).AppendChild(xmlelem3);

        XmlElement xmlelem4 = xmldoc.CreateElement("", "price", "");  
        xmltext = xmldoc.CreateTextNode("5.95");  
        xmlelem4.AppendChild(xmltext);  
        xmldoc.ChildNodes.Item().AppendChild(xmlelem1).AppendChild(xmlelem4);  
        xmldoc.Save("bookstore.xml"); //保存  
        showcontent.Text = "";  
        showcontent.Text = xmldoc.InnerXml;

  2.打开XML文件,两种方式

  (1)通过新建一个XML文件然后Load打开

XmlDocument xmldoc= new XmlDocument();
xmldoc.Load("album1.xml");
showcontent.Text = "";
showcontent.Text = xmldoc.InnerXml;

  (2)通过XmlTextReader新建

XmlTextReader reader = new XmlTextReader("album1.xml");
while (reader.Read()) MessageBox.Show(reader.Name);
reader.Close();

  记得在结尾做Close()。

  3.寻找和插入节点。

  (1)通过属性匹配找到需要的节点,然后增加新的节点

XmlDocument xmldoc = new XmlDocument();
xmldoc.Load("album1.xml");
XmlElement root = xmldoc.DocumentElement;
//查找结点 增加新的子节点
foreach (XmlNode item in root.ChildNodes)
{
if (item.Attributes["sizeh"].Value == "")
{
XmlElement photo2 = xmldoc.CreateElement("photo01");
photo2.SetAttribute("id", "");
photo2.SetAttribute("x", "");
photo2.SetAttribute("y", "");
photo2.SetAttribute("minw", "");
photo2.SetAttribute("minh", "");
photo2.SetAttribute("pwidth", "");
photo2.SetAttribute("pheight", "");
photo2.SetAttribute("image", "sampleS.xpi");
item.AppendChild(photo2);
xmldoc.Save(@"album02.xml");

  4.寻找和删除节点

  (1)和上面相似,通过foreach查找,找到属性相对应的节点然后remove()

XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(@"album1.xml");
XmlElement root = xmldoc.DocumentElement;
// 查找结点 增加新的子节点
foreach (XmlNode item in root.ChildNodes)
{
if (item.Attributes["sizeh"].Value == "")
{
item.RemoveAll();
xmldoc.Save(@"album02.xml");
}
}

  (2)获取节点列表,然后通过Foreach查找其需求(Photo)相对应的选项remove()

XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(@"album1.xml");
XmlNodeList nodelist = xmldoc.SelectSingleNode("album").ChildNodes;
//找到根节点,并读出其子节点列表
foreach (XmlNode xn in nodelist)
{
XmlElement xel = (XmlElement)xn;
XmlNodeList node = xel.GetElementsByTagName("Photo");
if (node.Count > )
{
if (node[].InnerText == "")
xel.RemoveAll();
//break;
}
}
xmldoc.Save(@"album02.xml");

  写在最后,上述这些关于XML的操作是通过百度得来的点点滴滴,然后总结得来的,有的因为自己偷懒还把原作者的例子也搬来了,只是整理的时间有些长,导致原作者的博客地址没有保存到,所以没有标记声明原作者内容,在此道歉。

  第一次写博客,目的是整理所学到的,分享给大家借鉴。有错的地方,麻烦指正。