Я пытаюсь прочитать этот xml файл в С# в переменную или набор переменных.
<ROWSET>
<ROW num="1">
<USER_ID></USER_ID>
<FIRST_NAME>Timothy</FIRST_NAME>
<MIDDLE_NAME></MIDDLE_NAME>
<LAST_NAME>Scott</LAST_NAME>
<EMPLOYEE_NO>99</EMPLOYEE_NO>
<HOME_PHONE></HOME_PHONE>
<EMPLOYEE_STATUS_>T</EMPLOYEE_STATUS_>
<HIRE_DATE>01/01/01</HIRE_DATE>
<DEPARTMENT>Engineering</DEPARTMENT>
<POSITION>Controls Engineer</POSITION>
<SHIFT>N</SHIFT>
<REPORTS_TO>Everhart,Robert</REPORTS_TO>
<PAY_TYPE>H</PAY_TYPE>
<EMPLOYEE_TYPE>R</EMPLOYEE_TYPE>
<TERMINATION_DATE>value</TERMINATION_DATE>
<PCN_CODE>stuff-RV</PCN_CODE>
</ROW>
<ROW num="2">
<USER_ID>RV100707</USER_ID>
<FIRST_NAME>Jan</FIRST_NAME>
<MIDDLE_NAME>G</MIDDLE_NAME>
<LAST_NAME>Pot</LAST_NAME>
<EMPLOYEE_NO>80</EMPLOYEE_NO>
<HOME_PHONE></HOME_PHONE>
<EMPLOYEE_STATUS_>A</EMPLOYEE_STATUS_>
<HIRE_DATE>01/01/01</HIRE_DATE>
<DEPARTMENT>Shipping</DEPARTMENT>
<POSITION>Shipping Coordinator</POSITION>
<SHIFT>2</SHIFT>
<REPORTS_TO>Hajkova,Karin</REPORTS_TO>
<PAY_TYPE>H</PAY_TYPE>
<EMPLOYEE_TYPE>R</EMPLOYEE_TYPE>
<TERMINATION_DATE></TERMINATION_DATE>
<PCN_CODE>stuff-RV</PCN_CODE>
Я рассмотрел несколько примеров, но ни один из сохранившихся элементов. Я также хотел бы пройти до конца файла, имеющего только одну ROW за проход туда. Так что другая функция может захватить эти значения и отправить их туда, где им нужно идти.
Например: элементы ROW: цикл до конца документа xml
<USER_ID></USER_ID>
<FIRST_NAME>Timothy</FIRST_NAME>
<MIDDLE_NAME></MIDDLE_NAME>
<LAST_NAME>McCreary</LAST_NAME>
<EMPLOYEE_NO>1048</EMPLOYEE_NO>
<HOME_PHONE></HOME_PHONE>
<EMPLOYEE_STATUS_>T</EMPLOYEE_STATUS_>
<HIRE_DATE>05/17/2010</HIRE_DATE>
<DEPARTMENT>Engineering</DEPARTMENT>
<POSITION>Controls Engineer</POSITION>
<SHIFT>N</SHIFT>
<REPORTS_TO>Everhart,Robert</REPORTS_TO>
<PAY_TYPE>H</PAY_TYPE>
<EMPLOYEE_TYPE>R</EMPLOYEE_TYPE>
<TERMINATION_DATE>07/01/2010</TERMINATION_DATE>
<PCN_CODE></PCN_CODE>
Загрузить в HTTP//Я выяснил эту часть.
ROW = элементы ROW 2
Существует множество способов работы с XML с использованием.NET и С#.
Некоторые из них знают:
XmlDocument doc = new XmlDocument();
doc.LoadXml(File.ReadAllText(@"PathToYourFile\file.xml"));
XmlNode rowset = doc.SelectSingleNode("/ROWSET"); // <-- This variable provides access to the root XML node
// The .Cast<> is needed because LINQ works only generic Collections.
// The .ToList() executes the LINQ query and store the result in a List<> (usually faster than using the IEnumerable<> directly but also higher memory usage)
List<XmlNode> rows = rowset.SelectNodes("ROW").Cast<XmlNode>().ToList();
foreach (XmlNode row in rows)
{
// access attibutes of row with:
string numValue = row.Attributes["num"].InnerText;
// access sub-elements of row with:
string employeeNo = row.SelectSingleNode("EMPLOYEE_NO").InnerText;
// You can even go deeper through an XML hierarchy with:
// row.SelectSingleNode("SomeXMLNode/SubNode/NodeOfSubNode").InnerText;
}
// Select the 2nd row
XmlNode secondRow = rows.Single(r => r.Attributes["num"].InnerText == "2");
В принципе, вы можете использовать XDocument (using System.Xml.Linq;
) для анализа документа. Использование выглядит примерно так:
XDocument doc = XDocument.Parse(File.ReadAllText("yourfilename.xml"));
XElement rowset = doc.Element("ROWSET"); // get the ROWSET element
XElement row1 = rowset.Elements("ROW").First(); // get the first child ROW of ROWSET
//get the ROW child of ROWSET having attribute num == 2
XElement row2 = rowset.Elements().Single(row => row.Attribute("num").Value == "2");
Когда вы говорите, что хотите только одну строку за один проход, я предполагаю, что вы хотите сосредоточиться на одной строке на каждой итерации (правильно?). Вы можете использовать foreach для ROWSET дочерних элементов ROW
foreach (XElement row in rowset.Elements())
{
string firstname = row.Element("FIRST_NAME").Value;
// etc
}
XElement
)?