0

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

1. [INode].ToString();

这将返回我节点中的值加上“^^[predicate uri]”,如下所示;

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

2. [INode].ReadXml(Xml阅读器); 我不知道如何使用,因为我找不到任何示例。

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

还是我需要的“XmlRead()”方法?我该如何使用它?

4

3 回答 3

3

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

于 2017-09-27T09:25:37.687 回答
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();
于 2017-09-26T13:51:08.677 回答
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>

难道没有其他方法可以提取“Geef houvast”吗?元素之间?

感谢您现在帮助我了解 XmlReader/XmlWriter!

于 2017-09-26T14:20:35.067 回答