如何更改替换xdmnode(SAXON)的内部文本?

时间:2017-11-21 10:03:20

标签: xml xpath xquery saxon xpath-2.0

我们如何更改xdmnode的内部文本?我的要求是用从另一个xdmnode中提取的xpathvalue替换xdmnode的innertext。实现xmldocument很容易。有没有人有线索在xdmnodes中实现这个?

2 个答案:

答案 0 :(得分:1)

通常XPath和XQuery在一个不可更改的树上工作,所以不要期望在默认树模型上找到任何setter。 XQuery的常用方法是编写一个返回已更改树的查询。

当你提到XmlDocumentInnerText时,我想你在.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 }。

答案 1 :(得分:1)

XdmNode模型主要用于XSLT和XQuery等函数式语言,因此设计为不可变的。但是,有一些XdmNode的实现可以包装底层节点模型(包括Microsoft的XmlDocument),其中一些是可变的,没有什么可以阻止你潜入并使用低级接口进行修改。