Я пытаюсь заполнить Treeview, используя возвращаемые данные из вызова веб-службы. Я использовал Restsharp для вызова и возврата данных. Тем не менее, я действительно пытаюсь понять, как передать его в правильное дерево. Я пытался использовать this CodeProject guide - но мне не удалось заставить его работать, и я создал беспорядок моего кода, пытаясь его адаптировать. Любая помощь или направление были бы весьма признательны.Как построить Treeview из XML?
XML-возвращается как:
<ListItems xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Items>
<ListItem>
<ID>n0z5tVQXsbTgB8PUp7tE5$p5shhQOV3s5Y</ID>
<URI>https://URL/n0z5tVQXsbTgB8PUp7tE5$p5shhQOV3s5Y</URI>
<ListID>nnK2NXzfmoCyTPE0yck44Nswy1Ho964Lo</ListID><Name>BATMAN</Name><ParentID xsi:nil="true" />
<Level1Code>BATMAN</Level1Code><Level2Code xsi:nil="true" /><Level3Code xsi:nil="true" />
<Level4Code xsi:nil="true" /><Level5Code xsi:nil="true" /><Level6Code xsi:nil="true" />
<Level7Code xsi:nil="true" /><Level8Code xsi:nil="true" /><Level9Code xsi:nil="true" />
<Level10Code xsi:nil="true" />
</ListItem>
<ListItem>
<ID>n0z5tVQXsbTnByah$pfDj0gDjm$sMYSfFYB</ID>
<URI>https://URL/n0z5tVQXsbTnByah$pfDj0gDjm$sMYSfFYB</URI>
<ListID>nnK2NXzfmoCyTPE0yck44Nswy1Ho964Lo</ListID><Name>Rig Move Project Management</Name>
<ParentID>n0z5tVQXsbTgB8PUp7tE5$p5shhQOV3s5Y</ParentID><Level1Code>BATMAN</Level1Code>
<Level2Code>RMPM</Level2Code><Level3Code xsi:nil="true" /><Level4Code xsi:nil="true" />
<Level5Code xsi:nil="true" /><Level6Code xsi:nil="true" /><Level7Code xsi:nil="true" />
<Level8Code xsi:nil="true" /><Level9Code xsi:nil="true" /><Level10Code xsi:nil="true" />
</ListItem>
<ListItem>
<ID>n0z5tVQXsbT76YjU9r5rbMbo526tKB7kT</ID>
<URI>https://URL/n0z5tVQXsbT76YjU9r5rbMbo526tKB7kT</URI>
<ListID>nnK2NXzfmoCyTPE0yck44Nswy1Ho964Lo</ListID><Name>14-RMPM-AUG</Name>
<ParentID>n0z5tVQXsbTnByah$pfDj0gDjm$sMYSfFYB</ParentID><Level1Code>BATMAN</Level1Code>
<Level2Code>RMPM</Level2Code><Level3Code>14-RMPM-AUG</Level3Code><Level4Code xsi:nil="true" />
<Level5Code xsi:nil="true" /><Level6Code xsi:nil="true" /><Level7Code xsi:nil="true" />
<Level8Code xsi:nil="true" /><Level9Code xsi:nil="true" /><Level10Code xsi:nil="true" />
</ListItem>
<ListItem>
<ID>n0z5tVQXsbT98mCa24ijg8oKVUXUu9voE</ID>
<URI>https://URL/n0z5tVQXsbT98mCa24ijg8oKVUXUu9voE</URI>
<ListID>nnK2NXzfmoCyTPE0yck44Nswy1Ho964Lo</ListID><Name>14-RMPM-SEP</Name>
<ParentID>n0z5tVQXsbTnByah$pfDj0gDjm$sMYSfFYB</ParentID><Level1Code>BATMAN</Level1Code>
<Level2Code>RMPM</Level2Code><Level3Code>14-RMPM-SEP</Level3Code><Level4Code xsi:nil="true" />
<Level5Code xsi:nil="true" /><Level6Code xsi:nil="true" /><Level7Code xsi:nil="true" />
<Level8Code xsi:nil="true" /><Level9Code xsi:nil="true" /><Level10Code xsi:nil="true" />
</ListItem>
<ListItem>
<ID>n0z5tVQXsbTzkVY2DmlIKqTJQ$ssiU$sZhq</ID>
<URI>https://URL/n0z5tVQXsbTzkVY2DmlIKqTJQ$ssiU$sZhq</URI>
<ListID>nnK2NXzfmoCyTPE0yck44Nswy1Ho964Lo</ListID><Name>14-RMPM-DEC</Name>
<ParentID>n0z5tVQXsbTnByah$pfDj0gDjm$sMYSfFYB</ParentID><Level1Code>BATMAN</Level1Code>
<Level2Code>RMPM</Level2Code><Level3Code>14-RMPM-DEC</Level3Code><Level4Code xsi:nil="true" />
<Level5Code xsi:nil="true" /><Level6Code xsi:nil="true" /><Level7Code xsi:nil="true" />
<Level8Code xsi:nil="true" /><Level9Code xsi:nil="true" /><Level10Code xsi:nil="true" />
</ListItem>
<ListItem>
<ID>n0z5tVQXsbT3akVrmqiTRzuqyw4bvZhNj</ID>
<URI>https://URL/n0z5tVQXsbT3akVrmqiTRzuqyw4bvZhNj</URI>
<ListID>nnK2NXzfmoCyTPE0yck44Nswy1Ho964Lo</ListID><Name>BOONE</Name><ParentID xsi:nil="true" />
<Level1Code>BOONE</Level1Code><Level2Code xsi:nil="true" /><Level3Code xsi:nil="true" />
<Level4Code xsi:nil="true" /><Level5Code xsi:nil="true" /><Level6Code xsi:nil="true" />
<Level7Code xsi:nil="true" /><Level8Code xsi:nil="true" /><Level9Code xsi:nil="true" />
<Level10Code xsi:nil="true" />
</ListItem>
<ListItem>
<ID>n0z5tVQXsbTJzA$pdmVRdjjTNL8ZgV2CtV</ID>
<URI>https://URL/n0z5tVQXsbTJzA$pdmVRdjjTNL8ZgV2CtV</URI>
<ListID>nnK2NXzfmoCyTPE0yck44Nswy1Ho964Lo</ListID><Name>TEST</Name>
<ParentID>n0z5tVQXsbT3akVrmqiTRzuqyw4bvZhNj</ParentID><Level1Code>BOONE</Level1Code><Level2Code>TEST</Level2Code>
<Level3Code xsi:nil="true" /><Level4Code xsi:nil="true" /><Level5Code xsi:nil="true" />
<Level6Code xsi:nil="true" /><Level7Code xsi:nil="true" /><Level8Code xsi:nil="true" />
<Level9Code xsi:nil="true" /><Level10Code xsi:nil="true" />
</ListItem>
<ListItem>
<ID>n0z5tVQXsbTJzA$pdmVRdjjTNL8ZgV2CtV</ID>
<URI>https://URL/n0z5tVQXsbTJzA$pdmVRdjjTNL8ZgV2CtV</URI>
<ListID>nnK2NXzfmoCyTPE0yck44Nswy1Ho964Lo</ListID><Name>TEST1</Name>
<ParentID>n0z5tVQXsbT3akVrmqiTRzuqyw4bvZhNj</ParentID><Level1Code>BOONE</Level1Code><Level2Code>TEST1</Level2Code>
<Level3Code xsi:nil="true" /><Level4Code xsi:nil="true" /><Level5Code xsi:nil="true" />
<Level6Code xsi:nil="true" /><Level7Code xsi:nil="true" /><Level8Code xsi:nil="true" />
<Level9Code xsi:nil="true" /><Level10Code xsi:nil="true" />
</ListItem>
</Items>
<NextPage xsi:nil="true" />
</ListItems>
Так он должен работать, чтобы:
-BATMAN
--- RMPM
------ 14-RMPM-августу
------ 14-RMPM-сентября
------ 14-RMPM-DEC
-BOONE
--- ТЕСТ
--- TEST1
Спасибо у о, Джон. Идентификатор уникален - я скопировал/вставил второй тестовый узел, например, и забыл изменить его. Я собираюсь покинуть офис, поэтому мне придется протестировать это сегодня вечером, когда я вернусь домой, но на первый взгляд это выглядит очень ясно, прямолинейно и (надеюсь) именно то, что мне нужно. – Boone
Кажется, что каждый родитель создан до дочернего узла, поэтому вам не нужен второй (и внутренний) цикл foreach. Используйте ParentId элемента, чтобы получить узел родителя. Отредактированный пост, так как не хотел копировать сериализацию. –
При условии, что это предположение верно для всех данных, тогда да. –