C# 我可以避免在LINQ to XML中使用完全限定的元素名吗?
假设我使用以下XML字符串调用XElement.Parse():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
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) 用什么