我知道你有两种方式,但不要按我的意愿工作:
1. [INode].ToString();
这将返回我节点中的值加上“^^[predicate uri]”,如下所示;
random node value.^^http://www.w3.org/2001/XMLSchema#string
2. [INode].ReadXml(Xml阅读器); 我不知道如何使用,因为我找不到任何示例。
有没有办法只检索节点的值?
还是我需要的“XmlRead()”方法?我该如何使用它?
基于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 序列化,不适合一般用途。
要获取内容,您应该使用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();
我似乎误解了 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!