XML: 让子节点继承父节点命名空间?
XML: let child-node inherit parent-node namespace?
我正在尝试使用 C# 的 XPath 创建一些 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 />
有没有一些方法可以在没有 "knowing" 前缀或命名空间的情况下访问父节点命名空间 (m2)-url?
谢谢!
您的文档根目录的命名空间是 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));
我正在尝试使用 C# 的 XPath 创建一些 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 />
有没有一些方法可以在没有 "knowing" 前缀或命名空间的情况下访问父节点命名空间 (m2)-url?
谢谢!
您的文档根目录的命名空间是 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));