두 자식 노드 사이의 모든 하위 자식 노드 값을 읽는 데 약간 문제가 있습니다. 현재 "작동 중"인 함수가 있지만 목록 상자에 항목을 추가하지 않습니다. 어떤 오류도 발생하지 않습니다.두 자식 노드 간 XML 읽기
콤보 상자에서 파일을 선택하면 폴더 내의 모든 XML 이름이 콤보 상자에 추가됩니다. 다른 콤보 상자에는 해당 XML에있는 모든 테스트 사이클 번호가 채워집니다. 그런 다음 cmobox 상자 안의 숫자를 선택한 다음 버튼을 클릭하면 filename 및 hashcode 속성의 모든 값을 목록 상자에 기록합니다. 나는. 20 개의 파일 이름 값과 20 개의 해시 코드 값이 있으면 목록 상자에 40 개의 항목이 있어야합니다.
작동하지 않는 유일한 기능은 목록 상자 1에 추가하는 것입니다.
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++로 표시되지 않습니다. –
Visual C++ VS2008을 사용하고 있습니다. – Brandonm