如何读取 INode 的值?
How to read value of an INode?
我从两个方面了解你,但不要如我所愿:
1. [INode].ToString();
这个returns我节点中的值加上一个“^^[predicate uri]”,像这样;
random node value.^^http://www.w3.org/2001/XMLSchema#string
2。 [INode].ReadXml(Xml reader); 我不知道怎么用,因为我找不到任何例子。
有没有办法只检索节点的值?
或者 "XmlRead()" 方法是我需要的吗?如何使用?
要获取内容,您应该使用 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!
基于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. [INode].ToString();
这个returns我节点中的值加上一个“^^[predicate uri]”,像这样;
random node value.^^http://www.w3.org/2001/XMLSchema#string
2。 [INode].ReadXml(Xml reader); 我不知道怎么用,因为我找不到任何例子。
有没有办法只检索节点的值?
或者 "XmlRead()" 方法是我需要的吗?如何使用?
要获取内容,您应该使用 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!
基于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 序列化,不适合一般用途。