我知道你有两种方法,但不要按我的意愿工作:
1。 [INODE]的ToString();
这会返回我的节点中的值加上“^^ [predicate uri]”,就像这样;
random node value.^^http://www.w3.org/2001/XMLSchema#string
2。 [INode] .ReadXml(Xml reader); 我不知道怎么用,因为我找不到任何例子。
有没有办法只检索节点的值?
或者是“XmlRead()”方法我需要什么?我该如何使用它?
答案 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!