Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从XDocument.Root获得一个级别?_C#_Xml_Linq_Linq To Xml - Fatal编程技术网

C# 如何从XDocument.Root获得一个级别?

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

例如,我想从根目录(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_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()?