如何从XDocument中提取特定元素?

时间:2010-03-11 01:47:27

标签: c# .net xml linq-to-xml

我有以下XDocument:

<SomeDoc Id="73" Protocol="rahrah" xmlns="http://schemas.company.com/rah/rah2/2005/">
  <Prop1>11111</Prop1> 
  <Prop2>77777</Prop2> 
  <Prop3>88888</Prop3> 
</SomeDoc>

我想在Prop1中提取值。

我使用以下代码:

var prop1 = xml.Element("Prop1");

但是prop1被设置为null。我是否正在尝试正确提取元素?

2 个答案:

答案 0 :(得分:3)

我假设xmlXDocument对象本身。

XDocument对象包含根元素,而不是其子元素。你需要写xml.Root.Element("Prop1");

编辑:您还需要包含命名空间,如下所示:

XNamespace ns = "http://schemas.company.com/rah/rah2/2005/";
xml.Root.Element(ns + "Prop1");

答案 1 :(得分:0)

您可以发布用于填充xml变量的代码吗?

我的猜测是XDocument没有将xml片段识别为有效文档。我认为XDocument期待<?xml version="1.0"?>根节点。您可能需要使用XmlTextReader而不是XDocument。