我正在尝试使用XPath for C#创建一些xml节点运行时。请参阅下面的XML:
<Package xmlns:m2="http://schemas.microsoft.com/appx/2013/manifest" xmlns="http://schemas.microsoft.com/appx/2010/manifest">
<Application>
<m2:VisualElements>
<!--- INSERT CHILD NODES HERE WHICH ALSO HAVE NAMESPACE 'm2' ---->
</m2:VisualElements>
</Application>
</Package>
目前我正在做以下事情:
XElement visualElements = doc.Descendants().SingleOrDefault(p => p.Name.LocalName == "VisualElements");
visualElements.Add(new XElement(doc.Root.GetDefaultNamespace() + "InitialRotationPreference"));
我知道这是错误的,因为我引用了默认命名空间,这将导致添加:
<InitialRotationPreference />
我想要的时候:
<m2:InitialRotationPreference />
在没有“知道”前缀或namespace-url的情况下,有没有办法访问父节点名称空间(m2)?
谢谢!
答案 0 :(得分:1)
您的文档根目录的名称空间为http://schemas.microsoft.com/appx/2010/manifest
。使用VisualElements
中的一个:
XName name = visualElements.Name.Namespace + "InitialRotationPreference"
或明确指定:
XName name = XName.Get("InitialRotationPreference",
"http://schemas.microsoft.com/appx/2013/manifest");
然后添加一个具有该名称的元素:
visualElements.Add(new XElement(name));