У меня небольшие проблемы с использованием XmlReader для чтения атрибутов только определенного элемента в XML. Чтобы представить функцию в перспективе, у меня есть выпадающий список, который читает все файлы xmls в папке. Элемент, выбранный в первом комбинированном списке, затем используется в качестве входных данных для XmlReader.
array<String^>^ HashMe::PopulateTCList()
{
int SelectedFileNum = comboBox1->SelectedIndex;
array<String^>^ Files = PopulateProjectList();
array<String^>^ AllTC = gcnew array<String^>(100);
int number = Files->GetLength(0);
try
{
int x = 0;
for(int y = 0; y < number; y++)
{
String^ File = Files[y];
if(SelectedFileNum == x)
{
XmlReader^ Reader = XmlReader::Create(File);
while(Reader->Read())
{
if((Reader->NodeType == XmlNodeType::Element) && (Reader->Name == "TestCycle"))
{
String^ TCNumber = Reader->ReadElementContentAsString();
comboBox2->Items->Add(TCNumber);
}
else
{
Reader->ReadToFollowing("TestCycle");
}
}
}
x = x +1;
}
}
catch (Exception^ e)
{
MessageBox::Show(e->ToString());
}
return AllTC;
}
XML-макет похож на приведенный ниже:
<?xml version="1.0" encoding="utf-8"?>
<Project Name="test">
<TestCycle Number="1">
<Files>
<FileName File="C:\Users\brandonm\Documents\asd.xps" />
<HashCode Code="AB-B5-85-EC-FE-C4-E2-41-09-6A-A8-77-69-A9-8D-1F" />
</Files>
</TestCycle>
<Project Name="test">
<TestCycle Number="2">
<Files>
<FileName FileName="C:\Users\brandonm\Documents\asd.xps" />
<HashCode HashCode="AB-B5-85-EC-FE-C4-E2-41-09-6A-A8-77-69-A9-8D-1F" />
</Files>
</TestCycle>
</Project>
<Project Name="test">
<TestCycle Number="3">
<Files>
<FileName FileName="C:\Users\brandonm\Documents\asd.xps" />
<HashCode HashCode="AB-B5-85-EC-FE-C4-E2-41-09-6A-A8-77-69-A9-8D-1F" />
</Files>
</TestCycle>
</Project>
</Project>
Обычно мне нужно, чтобы числа из каждого элемента TestCycle отображались в выпадающем списке.
Если у кого-то есть предложение или он знает, что не так с моим синтаксисом, пожалуйста, дайте мне знать. Я не могу найти надежный пример в Интернете.