我有一个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格式进行?如果它如何? ,或者我应该更改列表的格式?
提前致谢。
答案 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();
}
}
}