使用C#语言,如何对下面的一段Android中的XML文件进行解析?

2025-01-04 10:32:31
推荐回答(3个)
回答1:

我将完整代码给你:需要注意的是你的xml的第二行应该加入对前缀的定义如:
否则不是一个标准文档。下面是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
getInfFromXml(AppDomain.CurrentDomain.BaseDirectory+"a.xml");
}
static void getInfFromXml(string path)
{
XElement root = XElement.Load(path);
//取hello
string hello= root.Elements().Where(o => o.Attribute("name").Value == "hello").First().Value;
//取app_name
var nodes = root.Elements().Where(o => o.Attribute("name").Value == "app_name").Nodes();
string app_name = "";
foreach (var n in nodes)
{
app_name += n.ToString().Trim();
}
//取mycolor
string mycolor = root.Elements().Where(o => o.Attribute("name").Value == "mycolor").First().Value;
//取tests
List tests = root.Elements().Where(o => o.Attribute("name").Value == "test").First().Elements().Select(q => q.Value).ToList();
//打印
Console.WriteLine(hello);
Console.WriteLine(app_name);
Console.WriteLine(mycolor);
tests.ForEach(o => {
Console.WriteLine(o);
});
Console.ReadLine();
}
}
}

回答2:

如果只是读取的话,使用XPathDocument进行xpath查询会方便很多.
比如象下面这样

查询 hello
var helloNode = navigator.SelectSingleNode("//string[@name='hello']");
Trace.WriteLine("helloNode:" + helloNode.Value);

查询 item
var testItemNodes = navigator.Select("//string-array[@name='test']/item");

但是你的xml格式有问题,看其中使用了命名空间xliff,但却没有对xliff进行定义.

回答3:

楼上写的可以解决你的问题。