【发布时间】:2018-05-04 17:59:04
【问题描述】:
我们如何更改 xdmnode 的内部文本?我的要求是用从另一个 xdmnode 提取的 xpathvalue 替换 xdmnode 的内部文本。实现 xmldocument 很容易。有没有人知道在 xdmnodes 中实现这一点?
【问题讨论】:
标签: xml xpath xquery saxon xpath-2.0
我们如何更改 xdmnode 的内部文本?我的要求是用从另一个 xdmnode 提取的 xpathvalue 替换 xdmnode 的内部文本。实现 xmldocument 很容易。有没有人知道在 xdmnodes 中实现这一点?
【问题讨论】:
标签: xml xpath xquery saxon xpath-2.0
通常 XPath 和 XQuery 在不可变树上工作,因此不要期望在默认树模型上找到任何设置器。 XQuery 的常用方法是编写一个返回更改后的树的查询。
正如您提到的XmlDocument 和InnerText,我想您在.NET 平台上使用Saxon。在那里,您还可以选择针对包装的 XmlDocument 节点编写 XPath 2 或 3,然后返回到 MS .NET DOM API 以使用例如操作节点。 InnerText。
https://www.saxonica.com/html/documentation/dotnetdoc/Saxon/Api/DocumentBuilder.html#Wrap(System.Xml.XmlDocument) 允许您包装文档,然后,一旦您选择了XdmNode,您就可以调用https://www.saxonica.com/html/documentation/dotnetdoc/Saxon/Api/XdmNode.html#getUnderlyingXmlNode() 来访问XmlNode 并设置它的InnerText。
【讨论】:
XdmNode 模型主要用于 XSLT 和 XQuery 等函数式语言,因此设计为不可变的。但是,有一些 XdmNode 实现封装了底层节点模型(包括 Microsoft 的 XmlDocument),其中一些是可变的,没有什么可以阻止您深入研究并使用较低级别的接口进行修改。
【讨论】: