Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.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# 我可以避免在LINQ to XML中使用完全限定的元素名吗?_C#_Linq To Xml_Xml Namespaces - Fatal编程技术网

C# 我可以避免在LINQ to XML中使用完全限定的元素名吗?

C# 我可以避免在LINQ to XML中使用完全限定的元素名吗?,c#,linq-to-xml,xml-namespaces,C#,Linq To Xml,Xml Namespaces,假设我使用以下XML字符串调用XElement.Parse(): var xml = XElement.Parse(@" <?xml version="1.0" encoding="UTF-8"?> <AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> <ID>7c75442509c41100b6a413b88b523b

假设我使用以下XML字符串调用XElement.Parse():

var xml = XElement.Parse(@"
  <?xml version="1.0" encoding="UTF-8"?>
  <AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Owner>
      <ID>7c75442509c41100b6a413b88b523bd6f46554cdbee5b6cbe27bc08cb3f6a865</ID>
      <DisplayName>me</DisplayName>
    </Owner>
    <AccessControlList>
      <Grant>
        <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
      ...
  ");
当我真正想要的只是

var ownerElement = xml.Element("AccessControlPolicy").Element("Owner");

有没有办法让LINQ to XML采用特定的名称空间,这样我就不必一直指定它?

您可以使用

XNamespace ns = "http://s3.amazonaws.com/doc/2006-03-01/";
var ownerElement = xml.Element(ns + "AccessControlPolicy").Element(ns + "Owner");

您可以通过使用

XNamespace ns = "http://s3.amazonaws.com/doc/2006-03-01/";
var ownerElement = xml.Element(ns + "AccessControlPolicy").Element(ns + "Owner");
我认为你做不到(见乔恩·斯基特的),但你可以做一些技巧

1) 创建将XNamespace附加到字符串的扩展方法

2) 用什么

我认为你做不到(见Jon Skeet的),但你可以做一些技巧

1) 创建将XNamespace附加到字符串的扩展方法

2) 用什么