我在閱讀兩個子節點之間的所有子子節點的值時遇到了一些問題。我目前有一個「正在工作」的功能,但它並沒有將這些項目添加到列表框中。我也沒有得到任何錯誤。在兩個子節點之間讀取XML
應用程序的工作方式是,一旦在組合框中選擇了一個文件,文件夾內所有xml的名稱就會添加到組合框中,然後使用該XML中的所有Testcycle編號填充另一個組合框。然後,您在cmobox框中選擇一個數字,然後單擊一個按鈕,然後我希望將屬性文件名和散列碼的所有值寫入到列表框中。即如果有20個文件名值和20個哈希碼值,那麼列表框中應該有40個項目。
唯一不起作用的功能是添加到列表框之一。
void HashMe::AddToListBox()
{
String^ SelectedFile = comboBox1->SelectedItem->ToString();
String^ SearchString = "*" + SelectedFile + "*.XML";
int SelectedTC = int::Parse(comboBox2->SelectedItem->ToString());
try
{
array<String^>^ FullPaths = IO::Directory::GetFiles("E:\\XML Folder\\", SearchString, System::IO::SearchOption::AllDirectories);
int number = FullPaths->GetLength(0);
for (int x = 0; x < number; x++)
{
String^ FullPath = FullPaths[x];
XPathNavigator^ Root = XPathDocument(FullPath).CreateNavigator();
for each (XPathNavigator^ Nav in Root->Select(L"//TestCycle[@Number = '" + SelectedTC + "']"))
{
listBox4->Items->Add(Nav->GetAttribute(L"FileName",String::Empty)).ToString();
listBox4->Items->Add(Nav->GetAttribute(L"HashCode",String::Empty)).ToString();
}
}
}
catch (Exception^ e)
{
MessageBox::Show(e->ToString());
}
}
的XML文件的結構是這樣的:
<?xml version="1.0" encoding="utf-8"?>
<Project Name="New">
<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" />
<FileName File="C:\Users\brandonm\Documents\asdas.xps" />
<HashCode Code="7F-30-12-76-C8-80-CA-03-EC-71-12-49-9E-56-9D-D8" />
<FileName File="C:\Users\brandonm\Documents\asdasdasd" />
<HashCode Code="09-37-69-EF-36-3B-FD-42-D2-37-2D-70-74-A6-ED-BA" />
</Files>
</TestCycle>
<Project Name="New">
<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" />
<FileName FileName="C:\Users\brandonm\Documents\asdas.xps" />
<HashCode HashCode="7F-30-12-76-C8-80-CA-03-EC-71-12-49-9E-56-9D-D8" />
<FileName FileName="C:\Users\brandonm\Documents\asdasd.xps" />
<HashCode HashCode="E4-EF-33-AE-24-23-00-37-FD-E2-20-60-5E-68-C0-54" />
</Files>
</TestCycle>
</Project>
任何幫助將不勝感激。我認爲我的XPath查詢可能存在問題。由於
這似乎並非是C++。 – 2011-05-05 07:14:19
我使用VS2008的Visual C++ – Brandonm 2011-05-05 07:53:51