如何创建具有特定命名空间的 XElement?
Posted
技术标签:
【中文标题】如何创建具有特定命名空间的 XElement?【英文标题】:How create XElement with specific namespace? 【发布时间】:2012-08-21 07:24:13 【问题描述】:我在 LinqToXml 中创建新元素时遇到问题。 这是我的代码:
XNamespace xNam = "name";
XNamespace _schemaInstanceNamespace = @"http://www.w3.org/2001/XMLSchema-instance";
XElement orderElement = new XElement(xNam + "Example",
new XAttribute(XNamespace.Xmlns + "xsi", _schemaInstanceNamespace));
我想得到这个:
<name:Example xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
但在 XML 中我总是得到这个:
<Example xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="name">
我做错了什么?
【问题讨论】:
这就是你需要的***.com/a/4986019/570150 V4Vendetta:这是类似的问题,但现在我得到了这个:<name:Example xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:name="name">
【参考方案1】:
<name:Example xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
不是格式良好的命名空间,因为前缀 name
未声明。因此,无法使用 XML API 构建它。您可以做的是构造以下命名空间格式良好的 XML
<name:Example xmlns:name="http://example.com/name" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
用代码
//<name:Example xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:name="http://example.com/name"></name:Example>
XNamespace name = "http://example.com/name";
XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
XElement example = new XElement(name + "Example",
new XAttribute(XNamespace.Xmlns + "name", name),
new XAttribute(XNamespace.Xmlns + "xsi", xsi));
Console.WriteLine(example);
【讨论】:
我忘记写这个了。命名空间名称在父节点中声明。创建 xml 后,我总是在一些 xml 验证器上验证它。以上是关于如何创建具有特定命名空间的 XElement?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 XElement 上放置命名空间别名?如何将数据源添加到现有 RDL 文档?
XElement 不应该从其父 Xelement 继承命名空间吗?
将 XElement 合并到 XDocument 并解析命名空间