如何读取INode的值?

时间:2017-09-26 13:20:51

标签: c# dotnetrdf

我知道你有两种方法,但不要按我的意愿工作:

1。 [INODE]的ToString();

这会返回我的节点中的值加上“^^ [predicate uri]”,就像这样;

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

2。 [INode] .ReadXml(Xml reader); 我不知道怎么用,因为我找不到任何例子。

有没有办法只检索节点的值?

或者是“XmlRead()”方法我需要什么?我该如何使用它?

3 个答案:

答案 0 :(得分:2)

基于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序列化,不适用于一般用途。

答案 1 :(得分:1)

要获取内容,您应使用WriteXml代替ReadXml功能

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();

答案 2 :(得分:0)

我似乎已经误解了XmlReader和XmlWriter,也了解了使用方法,但似乎并没有让它发挥作用。 我收到的这条消息:

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

我想我确实需要调整XmlWritterSettings以使其正常工作。

我没有看到关于读取DotNetRDF INode所需的XmlWritterSettings的任何文档,所以我将使用" ToString()"现在。

这是节点持有的RDF / XML的一部分:

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

还有其他一些方法来提取&#34; Geef houvast。&#34;元素之间?

感谢您帮助我立即了解XmlReader / XmlWriter!