У меня небольшая проблема с чтением файла XML на C #.Это мой XML-файл:
<?xml version = "1.0" encoding="ISO8859-1" standalone="yes" ?>
<SITES>
<SITE>
<ERROR_COUNTER>0</ERROR_COUNTER>
<PROD>0</PROD>
<LOGINFO>
<URL>http://site1.com/login</URL>
<LOGIN>login</LOGIN>
<PASSWORD>pass</PASSWORD>
<DELAYMAX>20</DELAYMAX>
</LOGINFO>
<EMAIL>
<TO>dsds@dee.com, dsdsddd@dee.com,dsdds@dee.com</TO>
<SUBJECT></SUBJECT>
<BODY></BODY>
<PATH></PATH>
</EMAIL>
<TESTS>
<TEST>
<URL>http://site1.com/settings</URL>
<DELAYMAX>5</DELAYMAX>
</TEST>
<TEST>
<URL>http://site1.com/faq</URL>
<DELAYMAX>5</DELAYMAX>
</TEST>
<TEST>
<URL>http://site1.com/download-faq-pdf</URL>
<DELAYMAX>5</DELAYMAX>
</TEST>
</TESTS>
</SITE>
<SITE>
<ERROR_COUNTER>0</ERROR_COUNTER>
<PROD>0</PROD>
<LOGINFO>
<URL>http://site2.com/login</URL>
<LOGIN>login2</LOGIN>
<PASSWORD>pass2</PASSWORD>
<DELAYMAX>20</DELAYMAX>
</LOGINFO>
<EMAIL>
<TO>dsds@dee.com, dsdsddd@dee.com,dsdds@dee.com</TO>
<SUBJECT></SUBJECT>
<BODY></BODY>
<PATH></PATH>
</EMAIL>
<TESTS>
<TEST>
<URL>http://site2.com/settings</URL>
<DELAYMAX>5</DELAYMAX>
</TEST>
<TEST>
<URL>http://site2.com/faq</URL>
<DELAYMAX>5</DELAYMAX>
</TEST>
<TEST>
<URL>http://site2.com/download-faq-pdf</URL>
<DELAYMAX>5</DELAYMAX>
</TEST>
</TESTS>
</SITE>
</SITES>
Так что я хотел бы иметь возможность в C # просматривать список моих сайтов (у меня их может быть несколько десятков), для этого я сделал это:
XmlDocument xml = new XmlDocument();
xml.Load(@"D:\REM\config.xml");
foreach (XmlElement ndSites in xml.SelectNodes("SITES/SITE"))
{
Console.WriteLine(ndSites.GetElementsByTagName("ERROR_COUNTER"));
}
Но как только я это сделаю, я не знаю, как получить доступ к ценностям моих детей, не говоря уже о том, как сделать второй цикл в моих ТЕСТАХ, а затем получить доступ к каждому дочернему ТЕСТУ и получить мои URL-адреса..
Моя цель - получить для каждого веб-сайта информацию о соединении в LOGINFO, затем URL-адреса в TESTS, TEST и для всех существующих САЙТОВ.
Я много чего пробовал, но я не нашел ничего, что соответствует тому, что мне нужно.
Если кто-то может мне помочь.
РЕДАКТИРОВАТЬ: Это мой класс для десериализации кода C #
class XMLParser
{
public XMLParser() { }
public List<Site> readXML(XmlDocument xml)
{
List<Test> tests = new List<Test>();
Test test;
List<Site> sites = new List<Site>();
Site site;
//List<url>;
foreach (XmlElement ndSites in xml.SelectNodes("SITES/SITE"))
{
int idSite = int.Parse(ndSites.Attributes[0].Value);
site = new Site();
int prod = int.Parse(ndSites["PROD"].InnerText);
int error = 0;
int max = 3;
foreach (XmlElement ndError in ndSites.SelectNodes("/ERROR"))
{
error = int.Parse(ndError["COUNTER"].InnerText);
max = int.Parse(ndError["MAX"].InnerText);
}
foreach (XmlElement ndLogin in ndSites.SelectNodes("LOGINFO"))
{
site = new Site(idSite, ndLogin["URL"].InnerText, ndLogin["LOGIN"].InnerText, ndLogin["PASSWORD"].InnerText, error, prod, max);
}
foreach (XmlElement ndTests in ndSites.SelectNodes("TESTS/TEST"))
{
test = new Test(ndTests["URL"].InnerText, int.Parse(ndTests["DELAYMAX"].InnerText));
tests.Add(test);
}
site.lstTest = tests;
sites.Add(site);
}
return sites;
}
Но у меня есть другая проблема, когда я использую мой сайтобъект, o имеет шесть элементов, все URL-адреса моего сайта 1 и все URL-адреса моего сайта 2.
Например, для моего XML-файла выше у меня будет два объекта Test из шести элементов