Как получить / получить дочерние узлы в XML? C# linq to XML
Всем Привет,
У меня есть постановка задачи, в которой я хочу получить дочерние узлы конкретного идентификатора
используя Linq to XML, я могу получить все данные узла вместе с другими данными, как я могу извлечь дочерний узел из среды.
Вот моя XML файловая структура :
<ProjectEnvironments> <ProjectEnvironment> <ProjectId>22</ProjectId> <ProjectName>Proj22</ProjectName> <GroupName>Group</GroupName> <ProjectApIUrl>http://localhost.dell.com/PremierToolsUX#/Gvt/API</ProjectApIUrl> <ProjectUrl>http://localhost.dell.com/PremierToolsUX#/Gvt</ProjectUrl> <Environments> <Environment> <EnvId>22</EnvId> <EnvName>Proj22</EnvName> </Environment> <Environment> <EnvId>33</EnvId> <EnvName>Proj33</EnvName> </Environment> </Environments> </ProjectEnvironment> </ProjectEnvironments>
используя приведенный ниже код, я могу получить все XML-данные на основе ProjectId, как я могу получить данные сред, т. е. все EnvId и EnvName для одного и того же узла ProjectId ?
XDocument _XDocument = XDocument.Load(@"C:\test.xml"); var items = from item in _XDocument.Elements("ProjectEnvironments").Elements("ProjectEnvironment") where item != null && (item.Element("ProjectId").Value == projectId) select item;
чтобы получить среды я попробовал следующий код который дает ошибку ссылки на объект
var Envs = from itemz in _XDocument.Descendants("ProjectEnvironments").Descendants("ProjectEnvironment").Descendants("Environments").Descendants("Environment") where item != null && (item.Element("EnvId").Value == _environments[0].EnvId) select item;
Может ли кто-нибудь помочь мне решить эту проблему?
заранее спасибо
Что я уже пробовал:
Here's my XML file structure : <pre> <ProjectEnvironments> <ProjectEnvironment> <ProjectId>22</ProjectId> <ProjectName>Proj22</ProjectName> <GroupName>Group</GroupName> <ProjectApIUrl>http://localhost.dell.com/PremierToolsUX#/Gvt/API</ProjectApIUrl> <ProjectUrl>http://localhost.dell.com/PremierToolsUX#/Gvt</ProjectUrl> <Environments> <Environment> <EnvId>22</EnvId> <EnvName>Proj22</EnvName> </Environment> <Environment> <EnvId>33</EnvId> <EnvName>Proj33</EnvName> </Environment> </Environments> </ProjectEnvironment> </ProjectEnvironments>
используя приведенный ниже код, я могу получить все XML-данные на основе ProjectId, как я могу получить данные сред, т. е. все EnvId и EnvName для одного и того же узла ProjectId ?
XDocument _XDocument = XDocument.Load(@"C:\test.xml"); var items = from item in _XDocument.Elements("ProjectEnvironments").Elements("ProjectEnvironment") where item != null && (item.Element("ProjectId").Value == projectId) select item;
чтобы получить среды я попробовал следующий код который дает ошибку ссылки на объект
var Envs = from itemz in _XDocument.Descendants("ProjectEnvironments").Descendants("ProjectEnvironment").Descendants("Environments").Descendants("Environment") where item != null && (item.Element("EnvId").Value == _environments[0].EnvId) select item;
Может ли кто-нибудь помочь мне решить эту проблему?