c#用XmlAttribute如何往xml文档里面节点写入属性?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#用XmlAttribute如何往xml文档里面节点写入属性?相关的知识,希望对你有一定的参考价值。

XmlAttribute好像没有构造函数 应该说 是没有公有的构造函数 我不知道该怎么往xml文档里面添加属性

以下是我搜集的一些XML常用的操作,一般就这几个。你说的问题,可以用这样的方式someNode.SetAttribute("","");来解决,但首先你需要找到那个需要改动的节点someNode。呵呵,你还是慢慢看吧,不多。
using System.Xml;
//初始化一个xml实例
XmlDocument xml=new XmlDocument();

//导入指定xml文件
xml.Load(path);
xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));

//指定一个节点
XmlNode root=xml.SelectSingleNode("/root");

//获取节点下所有直接子节点
XmlNodeList childlist=root.ChildNodes;

//判断该节点下是否有子节点
root.HasChildNodes;

//获取同名同级节点集合
XmlNodeList nodelist=xml.SelectNodes("/Root/News");

//生成一个新节点
XmlElement node=xml.CreateElement("News");

//将节点加到指定节点下,作为其子节点
root.AppendChild(node);

//将节点加到指定节点下某个子节点前
root.InsertBefore(node,root.ChildeNodes[i]);

//为指定节点的新建属性并赋值
node.SetAttribute("id","11111");

//为指定节点添加子节点
root.AppendChild(node);

//获取指定节点的指定属性值
string id=node.Attributes["id"].Value;

//获取指定节点中的文本
string content=node.InnerText;

//保存XML文件
string path=Server.MapPath("~/file/bookstore.xml");
xml.Save(path);
//or use :xml.Save(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));
参考技术A XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("/aa.xml");
XmlNode root = xmlDoc.SelectSingleNode("bcaster");//查找<bcaster>
XmlElement xe1 = xmlDoc.CreateElement("item");//创建一个<item>节点
xe1.SetAttribute("itemtitle", "值");//设置该节点itemtitle属性
xe1.SetAttribute("item_url", "值");//设置该节点item_url属性
xe1.SetAttribute("link", "值");//设置该节点link属性
root.AppendChild(xe1);
xmlDoc.Save("/aa.xml");//保存。
参考技术B 其实用JQuery框架实现最简单不过了。

用C#创建XML文档和读取并修改XML文档

我们先建立一个模板,下面的示例就是用这个模板来写的。

<root_CharacterTemp>
  <CharacterTemp>
    <JobId>0</JobId>
    <InitMode>none</InitMode>
    <Rate_Force>0</Rate_Force>
  </CharacterTemp>
</root_CharacterTemp>

我们来先写如何用代码创建上面的xml数据

void CreateXml()
    
        //判断文件是否存在
        if (!File.Exists(path))
        
            XmlDocument xmlDoc = new XmlDocument();
            XmlElement root_Character = xmlDoc.CreateElement("root_CharacterTemp");
            XmlElement characterTemp = xmlDoc.CreateElement("CharacterTemp");
            XmlElement jobId = xmlDoc.CreateElement("JobId");
            jobId.InnerText = "0";
            XmlElement initMode = xmlDoc.CreateElement("InitMode");
            initMode.InnerText = "none";
            XmlElement rate_Force = xmlDoc.CreateElement("Rate_Force");
            rate_Force.InnerText = "0";
            //下面的代码都是 添加节点
            characterTemp.AppendChild(jobId);
            characterTemp.AppendChild(initMode);
            characterTemp.AppendChild(rate_Force);
            root_Character.AppendChild(characterTemp);
            xmlDoc.AppendChild(root_Character);
            xmlDoc.Save(path);
        
    

编译并运行就会就会创建示例中的xml数据

下面是如何更新xml数据

void UpdateXml()
    
        if (File.Exists(path))
        
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(path);
            XmlNode root = xmlDoc.SelectSingleNode("root_CharacterTemp");
            XmlNodeList nodeList = root.ChildNodes;
            foreach (XmlElement node in nodeList)
            
                foreach (XmlElement childNode in node.ChildNodes)
                
                    if (childNode.Name == "JobId")
                    
                        childNode.InnerText = "1000";
                    
                
            
            xmlDoc.Save(path);
        
    

很简单几行代码就能修改某一个数据,这里我修改的是JobId的数据,把0修改成了1000


以上是关于c#用XmlAttribute如何往xml文档里面节点写入属性?的主要内容,如果未能解决你的问题,请参考以下文章

XMLAttribute 不工作

无法以所需的方式将 XML 属性值解析为 C# 枚举

C#从xml反序列化日期时间

C# 不能在 2 个 Xmlnodes 中添加相同的 XmlAttribute

XML 反序列化:在单个属性上使用 XmlAttribute 和 XmlText

C# 把XML转换成PDF文件