Вопрос

У меня есть этот код:

   [RdfSerializable( HasResourceUri=false )]
   public class Item
   {
      [RdfProperty(true)]
      public string MyProp;
   }

   [RdfSerializable]
   public class AllItems
   {
      [RdfProperty(true)] public string mTitle;

      private int id = new Random().Next(0, 20);

      [ResourceUri]
      public string ResourceUri 
      {
         get { return "This " + id.ToString(); }
      }

      [RdfProperty(false, Name="item")]
      public Item[] Items;
   }

Созданный таким образом:

var item = new AllItems();
item.mTitle = "Hello World!";
item.Items = new Item[] { new Item() { MyProp = "test1" }, new Item() { MyProp = "test2" } };

var doc = Rdfizer.Serialize(item);

System.Console.Out.Write(doc.ToString());

Вот часть результата:

         <ns:AllItems rdf:about="This 1">
                <ns:mTitle rdf:datatype="http://www.w3.org/2001/XMLSchema#string
">Hello World!</ns:mTitle>
                <ns:item>
                        <ns:Item>
                                <ns:MyProp rdf:datatype="http://www.w3.org/2001/
XMLSchema#string">test1</ns:MyProp>
                        </ns:Item>
                </ns:item>
                <ns:item>
                        <ns:Item>
                                <ns:MyProp rdf:datatype="http://www.w3.org/2001/
XMLSchema#string">test2</ns:MyProp>
                        </ns:Item>
                </ns:item>
        </ns:AllItems>

Первый вопрос заключается в следующем:Как я мог бы создать единый тег и быть им?

Второй вопрос:Как я мог бы сделать тег не видимым, а только его содержимое?т. е.все его дочерние элементы должны быть прямыми дочерними элементами тега.

Это было полезно?

Решение

Короче говоря:то, что вы хотите, нарушает спецификации RDF.Похоже, вы хотели бы обрабатывать выходные данные как XML, но вы не должны!

В RDF вы манипулируете тройками, и вас никогда не должно волновать, как они сериализуются в XML, потому что RDF не зависит от синтаксиса, а спецификации сериализации RDF / XML позволяют представлять один и тот же набор троек разными способами.Чтобы проиллюстрировать это, вы можете выбрать инструмент RDF "A" для создания документа RDF.Вы выбираете RDF Tool "B", загружаете этот документ и снова сохраняете его под новым именем без каких-либо изменений.Вы сравниваете два файла, и внутри вы найдете одинаковые тройки, но два XML-файла могут выглядеть совершенно по-разному!Вы не можете заставить теги приходить и уходить, на самом деле теги - это "не ваше дело" :).

Суть в том, что если вы хотите диктовать, как должен выглядеть ваш выходной XML-файл, вам следует просто полностью забыть RDF и просто использовать простые старые инструменты XML для выполнения работы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top