C# 如何从XDocument.Root获得一个级别?
例如,我想从根目录(PBC)返回一个级别(PBCVersion、ProjectName、ProjectVersion、Targets、Packages),但是使用:C# 如何从XDocument.Root获得一个级别?,c#,xml,linq,linq-to-xml,C#,Xml,Linq,Linq To Xml,例如,我想从根目录(PBC)返回一个级别(PBCVersion、ProjectName、ProjectVersion、Targets、Packages),但是使用: foreach (XElement x in oPbcXDocument.Root.Elements()) { Console.WriteLine(x.Value); } 我回来了: PBC 1 dfcs 1102 RCM565bas_build.bat RCM565scm-00110binlogWINSIMbas_bui
foreach (XElement x in oPbcXDocument.Root.Elements())
{
Console.WriteLine(x.Value);
}
我回来了:
PBC
1
dfcs
1102
RCM565bas_build.bat RCM565scm-00110binlogWINSIMbas_build.bat SIMscm-00110binlog
bas_package.batscm-00110PackageoutlogDFCS1102RCM565LastSuccessfulComponentsDFCS1102WINSIMLastSuccessfulComponents2
以下是XML:
<?xml version="1.0" encoding="utf-8"?>
<PBC>
<PBCVersion>1</PBCVersion>
<ProjectName>dfcs</ProjectName>
<ProjectVersion>1102</ProjectVersion>
<Targets>
<Target>
<TargetName>RCM565</TargetName>
<CommandLine>bas_build.bat RCM565</CommandLine>
<BuildEnvTypeName>scm-00110</BuildEnvTypeName>
<RelativeOutputPath>bin</RelativeOutputPath>
<RelativeLogPath>log</RelativeLogPath>
<Dependencies/>
</Target>
<Target>
<TargetName>WINSIM</TargetName>
<CommandLine>bas_build.bat SIM</CommandLine>
<BuildEnvTypeName>scm-00110</BuildEnvTypeName>
<RelativeOutputPath>bin</RelativeOutputPath>
<RelativeLogPath>log</RelativeLogPath>
<Dependencies/>
</Target>
</Targets>
<Packages>
<Package>
<CommandLine>bas_package.bat</CommandLine>
<BuildEnvTypeName>scm-00110</BuildEnvTypeName>
<PackageName>Package</PackageName>
<RelativeOutputPath>out</RelativeOutputPath>
<RelativeLogPath>log</RelativeLogPath>
<Dependencies>
<BuildDependency>
<ProjectName>DFCS</ProjectName>
<ProjectVersion>1102</ProjectVersion>
<TargetName>RCM565</TargetName>
<ProjectBuild>LastSuccessful</ProjectBuild>
<RelativeSandboxPath>Components</RelativeSandboxPath>
</BuildDependency>
<BuildDependency>
<ProjectName>DFCS</ProjectName>
<ProjectVersion>1102</ProjectVersion>
<TargetName>WINSIM</TargetName>
<ProjectBuild>LastSuccessful</ProjectBuild>
<RelativeSandboxPath>Components2</RelativeSandboxPath>
</BuildDependency>
</Dependencies>
</Package>
</Packages>
</PBC>
1.
dfcs
1102
RCM565
bas_build.bat RCM565
scm-00110
箱子
日志
温西姆
bas_build.bat SIM
scm-00110
箱子
日志
bas_package.bat
scm-00110
包裹
出来
日志
DFCS
1102
RCM565
最后成功
组件
DFCS
1102
温西姆
最后成功
组件2
我如何才能只返回一个级别?请不要使用Value属性,因为它将始终包含所有子体的文本表示形式。根据需要处理元素。您的代码正确地将所有元素从
根目录下一级获取,但不清楚您希望获得哪种类型的输出。我假设您希望获得上述元素的完整标记:
foreach (XElement x in oPbcXDocument.Root.Elements())
{
Console.WriteLine(x.ToString());
}
您要查找的关系在XML/HTML DOM模型中称为父子关系。。。因此,使用具有匹配名称的方法在DOM中上下移动……您是否尝试过使用函数ElementsAfterSelf()?