我有这个XML文件:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfPasswordSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<PasswordSettings>
<CustomerRef>c</CustomerRef>
<Node>n</Node>
<Name>na</Name>
<Login>l</Login>
<Password>ITra+Map1RxklmcSY5yOo9wU9tUV0S4C4qwUv4p2ZFS3L8ByJYXmA9YjswlSTjQZXUJAkV3Z6mhY8OF5/dFOLNAZZRk2i2IOzrVOWSDfdpB8/Vm7PPF0ucSHILHNWpT8</Password>
<FileType>ft</FileType>
</PasswordSettings>
<PasswordSettings>
<CustomerRef>c</CustomerRef>
<Node>n</Node>
<Name>na</Name>
<Login>l</Login>
<Password>ITra+Map1RxklmcSY5yOo9wU9tUV0S4C4qwUv4p2ZFS3L8ByJYXmA9YjswlSTjQZXUJAkV3Z6mhY8OF5/dFOLNAZZRk2i2IOzrVOWSDfdpB8/Vm7PPF0ucSHILHNWpT8</Password>
<FileType>ft</FileType>
</PasswordSettings>
</ArrayOfPasswordSettings>
如您所见,有多个<PasswordSettings>
,它是多个项的列表,例如名称,登录名和密码。我可以在一些foreach <PasswordSettings>
循环中迭代<PasswordSettings>
并获取元素吗?
答案 0 :(得分:0)
请尝试以下示例:
XML:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<root>
<Brand name="Brand1">
<product name="Product1" />
<product name="Product2" />
</Brand>
<Brand name="Brand2">
<product name="Product3" />
<product name="Product4" />
</Brand>
</root>
C#:
StringBuilder result = new StringBuilder();
foreach (XElement level1Element in XElement.Load(@"D:\product.xml").Elements("Brand"))
{
result.AppendLine(level1Element.Attribute("name").Value);
foreach (XElement level2Element in level1Element.Elements("product"))
{
result.AppendLine(" " + level2Element.Attribute("name").Value);
}
}
答案 1 :(得分:0)
尝试xml linq:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication108
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
var results = doc.Descendants("PasswordSettings").Select(x => new
{
c = (string)x.Element("CustomerRef"),
node = (string)x.Element("Node"),
name = (string)x.Element("Name"),
login = (string)x.Element("Login"),
password = (string)x.Element("Password"),
fileType = (string)x.Element("FileType")
}).ToList();
}
}
}