以下是XML示例。 'file'是重复的节点。需要从'sftp'中读取'filename'和'sftp1','sftp2','sftp3'元素值。我们需要为每个“文件”节点重复相同的操作。
<FTPLocations>
<file>
<filedetails>
<filename>sample.txt</filename>
</filedetails>
<sftp>
<sftp1>
<sftp-username>UN</sftp-username>
<sftp-password>PW</sftp-password>
<sftp-host>ipaddress</sftp-host>
<sftp-path>path</sftp-path>
</sftp1>
<sftp2>
<sftp-username>UN</sftp-username>
<sftp-password>PW</sftp-password>
<sftp-host>ipaddress</sftp-host>
<sftp-path>path</sftp-path>
</sftp2>
<sftp3>
<sftp-username>UN</sftp-username>
<sftp-password>PW</sftp-password>
<sftp-host>ipaddress</sftp-host>
<sftp-path>path</sftp-path>
</sftp3>
</sftp>
</file>
<file>
<filedetails>
<filename>sample.txt</filename>
</filedetails>
<sftp>
<sftp1>
<sftp-username>UN</sftp-username>
<sftp-password>PW</sftp-password>
<sftp-host>ipaddress</sftp-host>
<sftp-path>path</sftp-path>
</sftp1>
<sftp2>
<sftp-username>UN</sftp-username>
<sftp-password>PW</sftp-password>
<sftp-host>ipaddress</sftp-host>
<sftp-path>path</sftp-path>
</sftp2>
<sftp3>
<sftp-username>UN</sftp-username>
<sftp-password>PW</sftp-password>
<sftp-host>ipaddress</sftp-host>
<sftp-path>path</sftp-path>
</sftp3>
</sftp>
</file>
</FTPLocations>
请建议我如何使用C#实现这一目标。
答案 0 :(得分:0)
您可以使用以下代码访问XML的元素:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("YOUR_PATH_TO_XML");
//for sftp1
XmlNodeList sftp1_hd = xmlDoc.GetElementsByTagName("sftp1");
foreach (XmlNode sftp1_node in sftp1_hd)
{
foreach (XmlNode sftp1_child_nodes in sftp1_node.ChildNodes)
{
Console.WriteLine(sftp1_child_nodes.LocalName);
Console.WriteLine(sftp1_child_nodes.InnerText);
}
}
//for sftp2
XmlNodeList sftp2_hd = xmlDoc.GetElementsByTagName("sftp2");
foreach (XmlNode sftp2_node in sftp2_hd)
{
foreach (XmlNode sftp2_child_nodes in sftp2_node.ChildNodes)
{
Console.WriteLine(sftp2_child_nodes.LocalName);
Console.WriteLine(sftp2_child_nodes.InnerText);
}
}
答案 1 :(得分:0)
试试xml linq
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication47
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
var results = doc.Descendants("sftp").Elements().Select(x => new
{
name = x.Name.LocalName,
username = (string)x.Element("sftp-username"),
password = (string)x.Element("sftp-password"),
host = (string)x.Element("sftp-ipaddress"),
path = (string)x.Element("sftp-path")
}).ToList();
}
}
}