2017-09-26 28 views
0

我知道你有兩種方式,但不按我想要的方式工作:如何讀取inode的價值?

1. [INode] .ToString();

這將返回值在我的節點加上一個「^^ [謂詞URI]」,如下所示;

random node value.^^http://www.w3.org/2001/XMLSchema#string 

2 INODE] .ReadXml(XML讀取器);我不知道怎麼用,怎麼我找不到任何的例子。

有檢索節點才值的方法嗎?

或者是「XmlRead()」方法我需要什麼?我如何使用它?

回答

1

根據NodeType,您可以投射到適當的界面,然後訪問例如

switch (node.NodeType) 
{ 
    case NodeType.Literal: 
    return ((ILiteralNode)node).Value; 
    case NodeType.Uri: 
    return ((IUriNode)node).Uri.ToString(); 
    // etc. 
} 

或者你可能想使用node.AsValuedNode().AsString()如果你確信你的節點是文字

注意,ReadXml()/WriteXml()方法對於.NET XML序列化,而不是用於一般用途。

+0

這幫了很多!謝謝! –

1

爲了得到你應該使用的ReadXmlWriteXml不是函數

var sb = new StringBuilder(); 
var xmlWriterSettings = new XmlWriterSettings 
{ // It's required in my case but maybe not in your try different settings 
    ConformanceLevel = ConformanceLevel.Auto 
}; 
using (var writer = XmlWriter.Create(sb, xmlWriterSettings)) 
    rdfType.WriteXml(writer); 
var result = sb.ToString(); 
0

我似乎已經misundestood了的XmlReader和XmlWriter的內容,也明白使用的方式,但似乎並沒有得到它的工作。 這個消息,我得到:

InvalidOperationException: This XmlWriter does not accept Attribute at this state Content. 

我想我也需要調整XmlWritterSettings,以使其發揮作用。

我在所需的XmlWritterSettings上看不到有關讀取DotNetRDF INodes的任何文檔,因此我現在要使用「ToString()」。

這是RDF/XML的一部分,該節點保存「 Geef houvast」

<property:Paragraph rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Geef houvast.</property:Paragraph> 

是不是有一些其他的方式來提取元素之間?

感謝您幫助我瞭解XmlReader/XmlWriter!