#c# #xmlnodelist
#c# #xmlnodelist
Вопрос:
<Tools ID="RDM">
<ButtonTool>
<Item ID="IS" TYPE="IS" NAME="IS" COLUMN_ID="ID" ORDERNO="UID" />
<Item ID="CS" TYPE="PROC" NAME="ABC">
<Path>C:ProgramDatabaseVLaunch.exe</Path>
<Parameter>/USERID=acc /USERPASS=abc /ID=ITEM /QUERY</Parameter>
</Item>
<Item ID="APPLICATION" TYPE="PROC" NAME="XYZ">
<Path>D:ACTbinACTLancher.exe</Path>
<Parameter>%U %I -APPLICATION $$PATIENTID$$ CT $$RDM_UID$$</Parameter>
</Item>
<Item ID="REPO" TYPE="PROC" NAME="AAA">
<Path>C:appLUCLauncher.exe</Path>
<Parameter>/USERID=acc /USERPASS=abc /ID=ITEM</Parameter>
</Item>
</ButtonTool>
</Tools>
Я новичок в этой области и сталкиваюсь с некоторыми проблемами,
это XML-файл, который я хочу распечатать в виде таблицы данных, я могу напечатать значение тега элемента в таблице, но не могу распечатать путь и тег параметра в таблице. Я пытался использовать SelectingsingleNode, но он всегда будет печатать первый путь и параметр в таблице.
код, который я использовал до сих пор, выглядит следующим образом …. любая помощь будет оценена
XmlNodeList nl = _doc.SelectNodes("Tools/ButtonTool/Item");
for (int i = 0; i < nl.Count; i )
{
string sType = base.Com.GetAttri(nl[i], "TYPE", "");
if (sType == "RIS")
{
_dt.Rows.Add(base.Com.GetAttri(nl[i], "ID", ""),
base.Com.GetAttri(nl[i], "TYPE", ""),
base.Com.GetAttri(nl[i], "NAME", ""),
base.Com.GetAttri(nl[i], "COLUMN_ID", ""),
base.Com.GetAttri(nl[i], "ORDERNO", ""));
}
else
{
//for (int j = 0; j < nl.Count; j )
//{
XmlNodeList pl = _doc.SelectNodes("Tools/ButtonTool/Item/Path");
txtPath.Text = pl.ToString();
XmlNode ppl = _doc.SelectSingleNode("Tools/ButtonTool/Item/Parameter");
txtUser.Text = ppl.InnerText;
//string Path = txtPath.Text;
_dt.Rows.Add(base.Com.GetAttri(nl[i], "ID", ""),
base.Com.GetAttri(nl[i], "TYPE", ""),
base.Com.GetAttri(nl[i], "NAME", ""),
base.Com.GetAttri(nl[i], "COLUMN_ID", ""),
base.Com.GetAttri(nl[i], "ORDERNO", ""), txtUser.Text, txtPath.Text
);
//}
}
Комментарии:
1. Вопрос: Что такое «база»? Если это пользовательский класс, можете ли вы показать его нам?
2. Я новичок в этом, но я думаю, что он используется для получения доступа к функции GetAttri(), которая используется для получения атрибута узла из xml
3. Для меня это звучит как нечто, что можно исправить с помощью некоторого xpath. Когда вы выбираете один узел из документа, используя общее имя, он всегда найдет первый узел в документе. Используя xpath, вы можете указать путь непосредственно к нужному узлу во время выполнения цикла. Что-то вроде /Item[i] где i — ваш номер цикла for . Я бы начал с этого, если вы новичок в этом w3schools.com/xml/xpath_intro.asp
4. когда я использую item [i], он выдает исключение.
5. но это работает, если вместо этого я использую числа, например, item [2], но опять же, когда вводятся новые данные, они все равно будут показывать тот же путь и параметр.