我有这段代码:
[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 :(得分:1)
简而言之:您想要的内容违反了RDF规范。看起来您希望将输出视为XML,但您不应该这样做!
在RDF中,你操纵三元组并且你永远不应该关心如何将它序列化为XML,因为RDF是独立于语法的,并且RDF / XML序列化规范允许以许多不同的方式表示同一组三元组。为了说明它,您可以选择RDF工具“A”创建RDF文档。您选择RDF工具“B”,加载该文档并再次以新名称保存,无需任何修改。你比较这两个文件,你会发现里面有相同的三元组,但两个XML文件可能看起来很不一样!你不能让标签来去,实际上标签是“不是你的业务”:)。
最重要的是,如果您想要指示输出XML的外观,您应该完全忘记RDF,只需使用普通的旧XML工具即可完成工作。