0

私はこのコードを持っています:

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

最初の質問: どうすれば単一のタグを作成できますか?

2 番目の質問: タグを非表示にし、コンテンツのみを表示するにはどうすればよいですか? つまり、すべての子がタグの直接の子になります。

4

1 に答える 1

1

要するに、あなたが望むものはRDF仕様に違反しています。出力を XML として扱いたいようですが、そうすべきではありません。

RDF では、トリプルを操作し、それがどのように XML にシリアライズされるかを気にする必要はありません。RDF は構文に依存せず、RDF/XML シリアライゼーション仕様では同じトリプルのセットをさまざまな方法で表現できるためです。これを説明するために、RDF ツール「A」を選択して RDF 文書を作成するとします。RDF ツール「B」を選択し、そのドキュメントをロードして、何も変更せずに新しい名前で再度保存します。2 つのファイルを比較すると、内部のトリプルは同じですが、2 つの XML ファイルはまったく異なって見える場合があります。タグを行ったり来たりさせることはできません。実際、タグは「あなたのビジネスではありません」:)。

肝心なのは、出力 XML がどのように見えるかを指示したい場合は、RDF を完全に忘れて、単純な古い XML ツールを使用して作業を完了する必要があるということです。

于 2009-07-16T15:30:37.943 に答える