c# - 使用 XDocument 生成具有多个命名空间的 XML

标签 c# xml linq-to-xml

我有这样的 XML:

<stream:stream to="lap-020.abcd.co.in" from="sourav@lap-020.abcd.co.in" xml:lang="en" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0"/>

尝试像这样使用 XDocument 生成 XML

private readonly XNamespace _streamNamespace = "http://etherx.jabber.org/streams";
private readonly XName _stream;

_stream = _streamNamespace + "stream";

XDocument xdoc=new XDocument(
    new XElement(_stream,
        new XAttribute("from", "sourav@lap-020.abcd.co.in"),
        new XAttribute("to","lap-020.abcd.co.in"),
        new XAttribute("xmlns:stream","http://etherx.jabber.org/streams"),
        new XAttribute("version","1.0"),
        new XAttribute("xml:lang","en")
      ));

但我得到一个异常(exception):

Additional information: The ':' character, hexadecimal value 0x3A, cannot be included in a name.

最佳答案

要添加命名空间声明,您可以使用 XNamespace.Xmlns,要引用预定义的命名空间前缀 xml,请使用 XNamespace.Xml,例如:

XNamespace stream = "http://etherx.jabber.org/streams";
var result = new XElement(stream + "stream",
                    new XAttribute("from", "sourav@lap-020.abcd.co.in"),
                    new XAttribute("to","lap-020.abcd.co.in"),
                    new XAttribute(XNamespace.Xmlns + "stream", stream),
                    new XAttribute("version","1.0"),
                    new XAttribute(XNamespace.Xml+"lang","en"),
                    String.Empty);
Console.WriteLine(result);
//above prints :
//<stream:stream from="sourav@lap-020.abcd.co.in" to="lap-020.abcd.co.in" 
//               xmlns:stream="http://etherx.jabber.org/streams" version="1.0" 
//               xml:lang="en">
//</stream:stream>

关于c# - 使用 XDocument 生成具有多个命名空间的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40271126/

相关文章:

c# - 是否可以获取作为 `params object[]` 传递的变量名称?

c# - cocoaasynsocket到C Sharp服务器

c# - 结合 join 和 group by 时,EF Core 3.1 意外生成 SQL

java - 在 Android 中使用简单 XML 解析 XML 文件列表元素

asp.net - 如何在 Simile Timeline 中重新加载数据

sql - XQuery 存在检查选择 sql 查询

xml - 如何在sql server存储过程中循环解析xml参数

c# - 通过 C# 将 LINQ to XML

c# - 使用 LIKE 关键字在 SQL 中搜索数据

xml - 为什么XDocument.Descendants()在PowerShell ISE中返回IEnumerator?