Unity 中使用XML的预备知识

举报
陈言必行 发表于 2021/08/14 01:14:01 2021/08/14
【摘要】 在整个XML处理过中,需要使用到的几个类的关系图: XMLNode 为抽象类,还实现了如下接口 public abstract class XmlNode : ICloneable, System.Collections.IEnumerable, System.Xml.XPath.IXPathNavigable1 注:该类实现了W3C文档对象模型(DOM)1级...

在整个XML处理过中,需要使用到的几个类的关系图:
类图
XMLNode 为抽象类,还实现了如下接口

public abstract class XmlNode : ICloneable, System.Collections.IEnumerable, System.Xml.XPath.IXPathNavigable
  
 
  • 1

注:该类实现了W3C文档对象模型(DOM)1级核心和Core DOM级别2.DOM是XML文档的内存(高速缓存)树表示显示。是DOM的.NET实现基类,它支持XPath选择并提供编辑功能,,,

它的属性:
Attributes :(只读)
返回去一个XmlAttributeCollection含有该节点的属性,,如果节点类型是XmlAttributeCollection,则返回节点的属性,否则,此属性返回null;

public virtual System.Xml.XmlAttributeCollection Attributes { get; }
  
 
  • 1

BaseURI:
返回 串,节点的加载位置,如果没有节点基本URL,则为String.Empty

public virtual string BaseURI { get; }
  
 
  • 1

ChildNodes : 获得所有子节点

public virtual System.Xml.XmlNodeList ChildNodes { get; }
  
 
  • 1

后知后觉:这是一个抽象类的方法和属性,,,()


XMLElement 主要是针对节点的一些属性进行操作
下面简单介绍它的属性,方法:

  • Attributes : 包含此节点的属性列表
public override System.Xml.XmlAttributeCollection Attributes { get; }
  
 
  • 1
  • HasAttributes :当前节点是否具有属性
public virtual bool HasAttributes { get; }
  
 
  • 1
  • InnerText :节点及其所有子节点连接值
public override string InnerText { get; set; }
  
 
  • 1
  • InnerXml :这个节点的子标记
public override string InnerXml { get; set; }
  
 
  • 1
  • Name :节点的限制名称 对于XmlElement节点,这是元素的标签名称。
  • NodeType :节点类型
  • ParentNode :获取节点的父节点

  • CloneNode() :创建此节点的副本

public override System.Xml.XmlNode CloneNode (bool deep);
  
 
  • 1
  • getAttribute() : 获取属性;
public virtual string GetAttribute (string name);
  
 
  • 1
  • GetAttributeNode () :获取属性节点
public virtual System.Xml.XmlAttribute GetAttributeNode (string name);
  
 
  • 1

注:我想您看到这里也觉得有些烦了,,既然有获取(get)那肯定有设置(set),还有删除等方法,这里不再赘述,想了解具体一点可以去查MSDN


XMLDocument 主要是针对节点的CUID(用户识别号)操作

下面列举出个人人为比较常用的属性,方法:

  • DocumentElement :获取文档的根,没有则返回null
  • DocumentType :类型
  • InnerText :内文,节点及其所有子节点的值
public override string InnerText { set; }
  
 
  • 1
  • InnerXml :当前节点的子节点标记
public override string InnerXml { get; set; }
  
 
  • 1
  • Name 名称 , LocalName 本地名称
  • XmlNodeType :节点类型
  • CloneNode() : 克隆节点
  • CreateAttribute () : 创建属性
public System.Xml.XmlAttribute CreateAttribute (string name);
  
 
  • 1
  • CreateNode(): 创建节点
public virtual System.Xml.XmlNode CreateNode (string nodeTypeString, string name, string namespaceURI);
  
 
  • 1
  • Load() : 加载 三个重载
//参数是:包含要加载的XML文档的流。
public virtual void Load (System.IO.Stream inStream);
//参数是:从指定的TextReader加载XML文档。
public virtual void Load (System.IO.TextReader txtReader);
//参数是:包含要加载的XML文档的文件的URL。URL可以是本地文件或HTTP URL(Web地址)
//好理解,经常用
public virtual void Load (string filename);
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • Save () : 保存 三个重载函数
//注释同上段代码
public virtual void Save (System.IO.Stream outStream);
public virtual void Save (System.IO.TextWriter writer);
public virtual void Save (string filename);
  
 
  • 1
  • 2
  • 3
  • 4

简单使用:

using System.Xml;
using UnityEngine;

public class XmlHandler : MonoBehaviour { XmlDocument Xdoc = null; void Start() { Xdoc = new XmlDocument();  //实例化 Debug.Log("当前目录是:" + Application.dataPath); Xdoc.Load(Application.dataPath + "/data.xml");  //加载XML 文件 XmlElement root = Xdoc.DocumentElement;   //获取跟节点 Debug.Log("根元素是:"+ root.Name); XmlNode dataNode = root.SelectSingleNode("data");  //获取根节点下的子节点 Debug.Log("节点名称"+dataNode.Name); for (int i = 0; i < dataNode.ChildNodes.Count; i++) { XmlElement xmElement = dataNode.ChildNodes[i] as XmlElement; if(xmElement.GetAttribute("id") == "1") { Debug.Log(dataNode.InnerXml);  //节点下的内容(string) Debug.Log("文本内容:"+dataNode.ChildNodes[i].InnerText);  //获取文本内容 xmElement.SetAttribute("id", "3");   //属性更改id值 } } //保存更改后的xml文件,, Xdoc.Save(Application.dataPath + "/data.xml"); //如果这样写的话,会得到一个新的xml文件,,而原来的文件将不会被改变 //Xdoc.Save(Application.dataPath + "/data1.xml"); }
}
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。

原文链接:czhenya.blog.csdn.net/article/details/78034254

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。