Создание атрибута Xml json: Array с использованием классов XElement и XNamespace C # - PullRequest
1 голос
/ 27 мая 2019

Я пытаюсь создать 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" безуспешно.

1 Ответ

1 голос
/ 27 мая 2019

Да, вы можете достичь этого с помощью 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>
...