使用 XElement 和 XNamespace C# 类 创建 Xml 属性 json:Array
Creating Xml attribute json:Array using XElement and XNamespace C# classes
我正在尝试构建如下所示的 Xml(取自另一个问题),但使用的是 XElement/XNamespace 类:
<person xmlns:json='http://james.newtonking.com/projects/json' id='1'>
<name>Alan</name>
<url>http://www.google.com</url>
<role json:Array='true'>Admin</role>
</person>
这样我就可以使用 Newtonsoft.Json.JsonConvert.SerializeXmlNode() 进行序列化并维护正确的数组。
我遇到的问题是创建 json:Array='true'.
其他示例显示 XmlDocument 类 或 Xml 字符串的原始创建,但有没有办法使用 XElement 实现它?我已经尝试使用 XNamespace 尝试创建 "json" 前缀但没有成功。
是的,您可以使用 XElement 实现它。例如:
XNamespace json = "http://james.newtonking.com/projects/json";
XDocument xml = new XDocument(new XElement("person",
new XAttribute(XNamespace.Xmlns + "json", json),
new XAttribute("id", 1),
new XElement("name", "Alan"),
new XElement("url", "http://www.google.com"),
new XElement("role", new XAttribute(json + "Array", true), "Admin")));
将产生以下内容:
<person xmlns:json="http://james.newtonking.com/projects/json" id="1">
<name>Alan</name>
<url>http://www.google.com</url>
<role json:Array="true">Admin</role>
</person>
我正在尝试构建如下所示的 Xml(取自另一个问题),但使用的是 XElement/XNamespace 类:
<person xmlns:json='http://james.newtonking.com/projects/json' id='1'>
<name>Alan</name>
<url>http://www.google.com</url>
<role json:Array='true'>Admin</role>
</person>
这样我就可以使用 Newtonsoft.Json.JsonConvert.SerializeXmlNode() 进行序列化并维护正确的数组。
我遇到的问题是创建 json:Array='true'.
其他示例显示 XmlDocument 类 或 Xml 字符串的原始创建,但有没有办法使用 XElement 实现它?我已经尝试使用 XNamespace 尝试创建 "json" 前缀但没有成功。
是的,您可以使用 XElement 实现它。例如:
XNamespace json = "http://james.newtonking.com/projects/json";
XDocument xml = new XDocument(new XElement("person",
new XAttribute(XNamespace.Xmlns + "json", json),
new XAttribute("id", 1),
new XElement("name", "Alan"),
new XElement("url", "http://www.google.com"),
new XElement("role", new XAttribute(json + "Array", true), "Admin")));
将产生以下内容:
<person xmlns:json="http://james.newtonking.com/projects/json" id="1">
<name>Alan</name>
<url>http://www.google.com</url>
<role json:Array="true">Admin</role>
</person>