2017-03-08 14 views
1

以下はXMLサンプルです。 'file'は繰り返されるノードです。 'filename'と 'sftp1'、 'sftp2'、 'sftp3'要素の値を 'sftp'から読み取る必要があります。 「ファイル」ノードごとに同じことを繰り返す必要があります。XMLファイルからサブノード値を読み取る方法

<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

次のコードを使用して、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); 
    } 

} 
0

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(); 
     } 
    } 
} 
のXML LINQをお試しください