使用LINQ to XML访问XML中的元素类型
本文关键字:XML 元素 类型 访问 LINQ to 使用 | 更新日期: 2023-09-27 18:18:45
如下面的代码片段所示,XML文件中每个元素的名称各不相同。元素1为testcheck1
类型,元素2为testcheck2.
类型
<?xml version="1.0" encoding="utf-16"?>
<Tests xmlns="urn:lst-emp:emp">
<testcheck1 xmlns="">
<Type>string</Type>
<Value>value1</Value>
</testcheck1>
<testcheck2 xmlns="">
<Type>int</Type>
<Value>1232</Value>
</testcheck2>
</Tests>
我可以使用下面的代码:
XElement xelement = XElement.Load("project_data.xml");
IEnumerable<XElement> employees = xelement.Elements();
Console.WriteLine("List of all Values:");
foreach (var employee in employees)
{
StreamWriter file2 = new StreamWriter("C:''tempFolder''results.xml", true);
file2.WriteLine(employee.Element("Value").Value);
file2.Close();
}
来获取XML文件中的每个值。(如value1
和1232
)。
我想知道是否有可能获得我在XML中定义的元素类型(如testcheck1
和testcheck2
)使用LINQ到XML。
听起来你真的只是在寻找元素名称,可能是LocalName
:
var root = XElement.Load("project_data.xml");
foreach (var element in root.Elements())
{
Console.WriteLine("{0}: {1}",
element.Name.LocalName,
element.Element("Value").Value);
}
(当也有Type
子元素时,谈论元素的"类型"有点令人困惑,请注意…)
将打印出:
testcheck1: value1
testcheck2: 1232
Type
元素和Value
元素的获取方式相同:
foreach (var employee in employees)
{
StreamWriter file2 = new StreamWriter("C:''tempFolder''results.xml", true);
var value = (string)employee.Element("Value");
var type = (string)employee.Element("Type");
var name = e.Name.LocalName;
// ...
}
你也可以创建一个匿名'employee'对象列表,其值和类型为:
var employees = from e in xelement.Elements()
select new {
Name = e.Name.LocalName,
Type = (string)e.Element("Type"),
Value = (string)e.Element("Value")
};
foreach (var employee in employees)
{
// use employee.Name, employee.Type and employee.Value
}