Unity上使用Linq To XML

using UnityEngine;
using System.Collections;
using System.Linq;
using System.Xml.Linq;
using System;

public class XML {
//static string xmlpath = Application.persistentDataPath + @"\myXML";//平台相关的路径(移动端)
static string xmlpath=Application.dataPath+@"\mydfdfXML";//电脑上的路径,移动端没有这个访问权限
/// <summary>
/// 初始化一个XML文件
/// </summary>
public static void CreateXMLDocument()
{
XElement root = new XElement("XMLContent",
new XElement("Herb1",new XAttribute("MyVaule","0")),
new XElement("Herb2",new XAttribute("MyVaule","0")),
new XElement("Herb3",new XAttribute("MyVaule","0")),
new XElement("Pill1",new XAttribute("MyVaule","0")),
new XElement("Pill2",new XAttribute("MyVaule","0")),
new XElement("Pill3",new XAttribute("MyVaule","0")),
new XElement("Level",new XAttribute("MyVaule","0")),
new XElement("Root","root")
);
root.Save(xmlpath);
}
public static XElement LoadXMLFromFile()
{
XElement root = XElement.Load(xmlpath);
return root;
}
public static void SetElementValue(string name, string value)
{
XElement root = LoadXMLFromFile();
root.Element(name).SetAttributeValue("MyVaule", value);
root.Save(xmlpath);
}
/// <summary>
/// 在根节点元素之前添加新的元素
/// </summary>
/// <param name="name">元素名字</param>
/// <param name="value">元素的值</param>
public static void AddElement(string name, string value)
{
XElement root = LoadXMLFromFile();
root.Element("Root").AddBeforeSelf(new XElement(name, new XAttribute("MyValue",value)));
root.Save(xmlpath);
}
/// <summary>
/// 删除指定的元素
/// </summary>
/// <param name="name">要删除的元素名称</param>
public static void RemoveElement(string name)
{
XElement root = LoadXMLFromFile();
root.Element(name).Remove();
root.Save(xmlpath);
}
/// <summary>
/// 根据元素名查找元素对应的值
/// </summary>
/// <param name="name">元素名</param>
/// <returns></returns>
public static string GetElementValue(string name)
{
XElement root = LoadXMLFromFile();
XAttribute xattr = root.Element(name).Attribute("MyVaule");
string s = xattr.Value;
return s;
}
}

http://blog.csdn.net/lyq5655779/article/details/7183350

1.写XML文件

[html] view plaincopy

  1. XElement xperson = new XElement("person");//根节点
  2. xperson.SetAttributeValue("age", 30);//设置属性
  3. XElement xperson1 = new XElement("person1");
  4. xperson1.Value = "tom";//设置 innerText值
  5. xperson1.SetAttributeValue("sex", "男");
  6. XElement xperson2 = new XElement("person2");
  7. xperson.Add(xperson1);//加入到根结点
  8. xperson.Add(xperson2);
  9. string xml = xperson.ToString();
  10. Console.WriteLine(xml);
  11. using (Stream stream = File.OpenWrite(@"D:\1.xml"))
  12. {
  13. byte[] bytes = new byte[1024];
  14. bytes = Encoding.UTF8.GetBytes(xml);
  15. stream.Write(bytes, 0, bytes.Length);//写入文件
  16. }

2.读取XML文件

----------如何读取xml文件的内容----------------

using(Stream stream=File.OpenRead(@"D:\1.xml"))
            {
               using(StreamReader reader= new StreamReader(stream))
               {
                   //从Reflector从可以看到TextReader的子类是StreamReader所以,可以直接用StreamReader来读取XML文档,传给XDocument.Load方法
                  XDocument xml=XDocument.Load(reader);//load里面
                  Console.WriteLine( xml.Root.ToString());//xml文档
                  Console.WriteLine(xml.Root.Nodes().ElementAt(0).ToString());//ElementAt()第几个子节点 
                  Console.WriteLine(xml.Root.Attribute("age").Value);//返回根节点的属性的值
                  XNode nodes=xml.Root.Nodes().ElementAt(0);
                  XElement e=nodes as XElement;
                  Console.WriteLine(e.Attribute("sex").Value);//读取第一个子节点的属性
                }
            
            }

3.读取App.Config

using (Stream stream = File.OpenRead(@"D:\net实例教程\练习net\XML练习\XML练习\App.config"))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    XDocument xml = XDocument.Load(reader);
                    XNode n1 = xml.Root.Nodes().ElementAt(0);//这就是<configuration> ------下面----<connectionStrings>
                    XElement e1 = n1 as XElement;
                    XNode n1_1 = e1.Nodes().ElementAt(0);//connectionStrings下面的<add .....>第一个
                    XNode n1_2 = e1.Nodes().ElementAt(1);//connectionStrings下面的<add .....>第一个
                    XElement e1_1 = n1_1 as XElement;
                    XElement e1_2 = n1_2 as XElement;
                    //Console.WriteLine("Name={0},Connection={1}", e1.Attribute("name").Value, e1.Attribute("connectionString").Value);
                    Console.WriteLine("第一个连接字符串的name={0},Connection={1}", e1_1.Attribute("name"), e1_1.Attribute("connectionString"));

Console.WriteLine("第一个连接字符串的name={0},Connection={1}", e1_2.Attribute("name"), e1_2.Attribute("connectionString"));

}
            }

[csharp] view plaincopy

    1. using (Stream stream = File.OpenRead(@"D:\net实例教程\练习net\XML练习\XML练习\App.config"))
    2. {
    3. using (StreamReader reader = new StreamReader(stream))
    4. {
    5. XDocument xml=XDocument.Load(reader);
    6. IEnumerable<XElement> XConnstr = xml.Root.Elements("connectionStrings");
    7. Console.WriteLine(XConnstr.Count().ToString());
    8. if (XConnstr.Count() == 1)
    9. {
    10. XElement Connstr = XConnstr.ElementAt(0);
    11. foreach(XElement conn in Connstr.Elements("add"))
    12. {
    13. string name = conn.Attribute("name").Value;
    14. string Connection = conn.Attribute("connectionString").Value;
    15. Console.WriteLine("Name={0},Age={1}", name, Connection);
    16. }
    17. }
    18. }
    19. }

http://blog.csdn.net/xutao_ustc/article/details/6316933

<?xml version="1.0" encoding="utf-8" ?>
<UIConfig Count="1">
  <workflow name="OilInbound">
    <activity name="Started">
        <Input>
          <Page></Page>
          <Method></Method>
        </Input>
        <Brief>
          <Page>OilInboundTaskDetail</Page>
          <Method>GetTaskDetailModel</Method>
        </Brief>
        <Detail>
          <Page>OilInboundTaskDetail</Page>
          <Method>GetTaskDetailModel</Method>
        </Detail>
        <DisplayName>任务创建</DisplayName>
    </activity>
    <activity name="OilCompositionAnalysis">
        <Input>
          <Page>OilAnalyzingDataInput</Page>
          <Method>GetOilAnalyzingDataInputModel</Method>
        </Input>
        <Brief>
          <Page>OilAnalyzingDataBrief</Page>
          <Method>GetOilAnalyzingDataBriefModel</Method>
        </Brief>
        <Detail>
          <Page>OilAnalyzingDataDetail</Page>
          <Method>GetOilAnalyzingDataDetailModel</Method>
        </Detail>
        <DisplayName>化验</DisplayName>
    </activity>
  </workflow>
</UIConfig>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Xml.Linq;
using System.Xml;
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            XElement doc =  XElement.Load("..//..//data-config.xml");//根元素
            string sss = getStr(doc, "OilInbound", "Started", "Input", "Page");
            Console.WriteLine(sss);
            Console.ReadKey();
        }
        //如果当前元素的子元素只有一个,可以直接用.Element("elementName")来得到,如果是多个子元素就用Elements("elementName")得到
        private static string getStr(XElement doc,string workflowName,string stepName,string typeName,string pageMethod) {
            var strEle = from workflow in doc.Elements("workflow")
                              where (string)workflow.Attribute("name") == workflowName
                              select
                              new{
                               str = workflow.Elements("activity").TakeWhile(x => (string)x.Attribute("name") == stepName).First().Element(typeName).Element(pageMethod).Value
                              };
            return strEle.First().str;
        }
    }
}

Unity上使用Linq To XML

时间: 2025-01-31 00:50:28

Unity上使用Linq To XML的相关文章

unity Android 打包后读取 xml 文件

问题:    前天在做东西的过程中发现了一个让人很纠结的问题,为什么Unity 程序在PC上测试一点都没问题但是打包发布到Android后却无法读取XML文件. 通过查找自资料发现打包发不到安卓后的路径和PC上测试时的路径发生了变化,因此读取就出bug了. 那么解决方法很简单: 1,建立一个新工程 2,添加两个GUItext组件一个用于显示测试平台另一个用于显示读取到的XML数据, 如下: 3,该贴代码了 //-------------------------------------------

24.C#LINQ TO XML(十二章12.3)

自己也写了那么多,但还有很多不懂,有点浮躁吧,但饭还是要吃啊,说说LINQ TO XML吧. LINQ TO XML位于System.Xml.Linq程序集,并且大多数类型位于System.Xml.Linq命名空间.该命名空间下几乎所有类型都以X为前缀;普通DOM API中的Element对应LINQ TO XML中的XElement.列举下都有哪些类型. XName:表示元素和特性的名称 XNamespace:表示XML的命名空间,通常是一个URL XObject:是XNode和XAttrib

Linq之Linq to XML

目录 写在前面 系列文章 linq to xml 总结 写在前面 在很多情况下,都可以见到使用xml的影子.例如,在 Web 上,在配置文件.Microsoft Office Word 文件(将word文档另存为xml文件,这也提供了一种通过操作xml,操作word的一种方式)以及数据库中,都可以看到 XML.而linq to xml提供了一种操作xml更便捷的方式. 系列文章 Linq之Lambda表达式初步认识 Linq之Lambda进阶 Linq之隐式类型.自动属性.初始化器.匿名类 Li

LINQ to XML 实战

LINQ to XML 轴定义:创建XML树或将XML文档加载到XML树之后,可以进行查询,从而查找元素并检索它们的值. 两类轴方法:-一些轴就是XELement和XDocument类中返回IEnumerable(T)集合的方法.-另一些轴方法是Extensions类中的扩展方法.实现为扩展方法的轴对集合进行操作,然后返回集合.XContainer是XElement的基类! -常见的轴方法:-XContainer.Elements()返回集合 -XContainer.Descendants()返

Linq学习随笔二------LINQ to XML

LINQ to XML LINQ to XML provides an in-memory XML programming interface that leverages the .NET Language-Integrated Query (LINQ) Framework. LINQ to XML uses the latest .NET Framework language capabilities and is comparable to an updated, redesigned D

Linq to XML 增删改查

Linq to XML同样是对原C#访问XML文件的方法的封装,简化了用xpath进行xml的查询以及增加,修改,删除xml元素的操作.C#访问XML文件的常用类:XmlDocument,XmlElement,XmlAttribute,XmlNode,XmlText等; Linq to XML 中的常用类 :XDocument,XElement,XAttribute. 废话不多说了,直接上代码: xml文件数据格式如下 public class DataBaseInfo { public str

Linq to Xml读取复杂xml(带命名空间)

前言:xml的操作方式有多种,但要论使用频繁程度,博主用得最多的还是Linq to xml的方式,觉得它使用起来很方便,就用那么几个方法就能完成简单xml的读写.之前做的一个项目有一个很变态的需求:C#项目调用不知道是什么语言写的一个WebService,然后添加服务引用总是失败,通过代理的方式动态调用也总是报错,最后没办法,通过发送原始的WebRequest请求直接得到对方返回的一个xml文件.注意过webservice的wsdl文件的朋友应该知道这个是系统生成的xml文件,有点复杂,研究了半

C#操作Xml:linq to xml操作XML

LINQ to XML提供了更方便的读写xml方式.前几篇文章的评论中总有朋友提,你为啥不用linq to xml?现在到时候了,linq to xml出场了. .Net中的System.Xml.Linq命名空间提供了linq to xml的支持.这个命名空间中的XDocument,XElement以及XText,XAttribute提供了读写xml文档的关键方法. 1. 使用linq to xml写xml: 使用XDocument的构造函数可以构造一个Xml文档对象:使用XElement对象可

不挣扎了,开始学习LINQ TO XML,进而来解析网页。

找到了别人遇到和我一样的问题:http://ylad.codeplex.com/discussions/430095(英文) 一位叫做Mister Goodcat的提供了信息: Short answer: XPath is not supported on the phone. If you want to use HTML Agility Pack, use the LinqToXml features instead. Long version:  Enabling the XPath fe