2009-07-15 3 views
0

У меня есть этот код:дублированные теги для одного свойства в ROWLEX

[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> 

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

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

+0

Не могли бы вы перефразировать вопросы? –

+0

Первый вопрос: вы видите и внутри. Каков способ сериализации верхнего кода, чтобы эти теги были всего одним ? Второй вопрос: тег представляет класс AllItems. Но как я могу заставить класс AllItems не генерировать теги? Я бы хотел, чтобы он содержал мои теги, но не генерировал никаких. Таким образом, и будут прямыми детьми тегов. –

ответ

1

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

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

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

Смежные вопросы