C# 以字符串形式获取xml属性的值

C# 以字符串形式获取xml属性的值,c#,linq-to-xml,C#,Linq To Xml,我在XElement中有一组xml,如下所示: <Object type="Item_Element"> <Property name="IDValue1" value="somevaluethatihave"/> <Property name="IDValue2" value="somevaluethatineed"/> <Property name="IDValue3" value="somevaluethatihaveanddonotn

我在
XElement
中有一组xml,如下所示:

<Object type="Item_Element">
  <Property name="IDValue1" value="somevaluethatihave"/>
  <Property name="IDValue2" value="somevaluethatineed"/>
  <Property name="IDValue3" value="somevaluethatihaveanddonotneed"/>
</Object>
string meID = (from el in linkedTeethInfo.DescendantsAndSelf("Property") 
    where (string)el.Attribute("name") == "IDValue2" 
    select el.Attribute("value").Value).FirstOrDefault();
var value = your_XElement
    .XPathSelectElement("Property[@name='IDValue2']")
    .Attribute("value")
    .Value;

以及其他一些不起作用的组合,并一直以
XElement
格式将其作为索引值返回。我想知道是否可以将单个值
somevaluethatineed
作为字符串获取?我更希望使用一个变量,而不必将其分解为多个步骤

类提供属性。您可以使用它来获取与元素关联的文本:

IEnumerable<string> meID = from el in linkedTeethInfo.DescendantsAndSelf("Property") 
    where (string)el.Attribute("name") == "IDValue2" 
    select el.Attribute("value").Value;
如果您知道元素中只有一个
“IDValue2”
,则可以得到如下单个字符串:

<Object type="Item_Element">
  <Property name="IDValue1" value="somevaluethatihave"/>
  <Property name="IDValue2" value="somevaluethatineed"/>
  <Property name="IDValue3" value="somevaluethatihaveanddonotneed"/>
</Object>
string meID = (from el in linkedTeethInfo.DescendantsAndSelf("Property") 
    where (string)el.Attribute("name") == "IDValue2" 
    select el.Attribute("value").Value).FirstOrDefault();
var value = your_XElement
    .XPathSelectElement("Property[@name='IDValue2']")
    .Attribute("value")
    .Value;

即使没有显式LINQ查询,您也可以获得该值(对我来说它看起来更优雅),如下所示:

<Object type="Item_Element">
  <Property name="IDValue1" value="somevaluethatihave"/>
  <Property name="IDValue2" value="somevaluethatineed"/>
  <Property name="IDValue3" value="somevaluethatihaveanddonotneed"/>
</Object>
string meID = (from el in linkedTeethInfo.DescendantsAndSelf("Property") 
    where (string)el.Attribute("name") == "IDValue2" 
    select el.Attribute("value").Value).FirstOrDefault();
var value = your_XElement
    .XPathSelectElement("Property[@name='IDValue2']")
    .Attribute("value")
    .Value;

返回一个
XAttribute
:您确定得到的是一个
XElement
,因为引用的代码不会返回它(
IEnumerable
)。您是否考虑过获取每个返回节点的
属性?@Richard-它可能是
XAttribute
。正如我所说的,我仍在试图通过这一切获得我的限制。我还尝试获取
,它让我处于相同的位置。这样做仍然可以提供与当前变量相同的格式类型。其中,值设置为索引。我想得不对吗?
.XPathSelectElement
甚至不是intellisense中的选项。@scapegoat17您的项目中是否引用了
System.Xml.Linq
?有关
XPathSelectElement
@scapegoat17访问该方法的信息,请参阅。要访问该方法,您需要在作用域中使用System.Xml.XPath,因为它是该命名空间的扩展方法。