从XML获取值

时间:2015-09-16 05:52:56

标签: c# xml

我有一个XML文件,里面填充的值如下:

function auth($login, $password)
{
    // we check user. For instance, it's ok, and we get his ID and his role.
    $userID = 1;
        $userRole = "admin";

        // Concatenating data with TIME
        $data = time()."_".$userID."-".$userRole;
        $token = createToken($data);
        echo json_encode($token);
    }

对于每一行,我想将名称导入一个字符串(让我们称之为serviceName),将值导入另一个字符串(让我们称之为servicePath)

我在xml中得到了大约250行,是否可以用当前的xml格式进行?如果它如何? ,或者我应该更改列表的格式?

提前致谢。

3 个答案:

答案 0 :(得分:0)

您可以获取所有节点并在循环中访问其属性。在下面的示例中,我将两个属性的值添加到2个不同的数组中,以后可以轻松操作。

XmlDocument doc = new XmlDocument();
doc.Load("yourfile.xml");
XmlNodeList usernodes = doc.SelectNodes("//property");

//Declare arrays
List<string> serviceName = new List<string>();
List<string> servicePath = new List<string>();

//iterate through all elements found
foreach (XmlNode usernode in usernodes)
{
    serviceName.Add(usernode.Attributes["name"].Value);
    serviceName.Add(usernode.Attributes["value"].Value);
}

答案 1 :(得分:0)

最终管理

static void Main(string[] args)
        {
            List<Service> services;

            using(StreamReader file = File.OpenText("c:\\projects.xml"))
            {

                XDocument doc = XDocument.Load(file);
                services = (from node in doc.Root.Elements("property")
                               select new Service
                               {
                                   serviceName = node.Attribute("name").Value,
                                   servicePath = node.Attribute("value").Value,
                                   dllFiles = System.IO.Directory.GetFiles( "servicePath", "*.dll" ),
                               }).ToList<Service>();

        }

答案 2 :(得分:0)

使用XML Linq

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string input =
                "<Root>" +
                    "<property name =\"Web Application\" value=\"\\Fxnet2\\Web\\webpl\" />" +
                    "<property name=\"Web Service\" value=\"\\FXnet2\\Web\\FXnet_SC_WS\" />" +
                "</Root>";

            XElement root = XElement.Parse(input);

            var results = root.Descendants("property").Select(x => new {
                name = x.Attribute("name").Value,
                value = x.Attribute("value").Value
            }).ToList();

        }
    }
}
​