我被System.Xml
名称空间中的C#及其XML操作类宠坏了(当然是坏了)。我可以将XML文件加载到XmlDocument
中。我可以使用XmlNode.SelectNodes( "an xpath expression" )
在整个文档中搜索与XPath表达式匹配的节点。结果是一个包含我可以遍历的XmlNode
对象的XmlNodeList
。
现在我使用的是C++ Qt (版本4.7.1和4.8,但具体的版本可能并不重要)。我可以将XML文件加载到QDomDocument
中。但是,令我沮丧的是,我不能像在C#中那样使用XPath表达式搜索文档。
我使用QXmlQuery
在XML文件中查找内容的成功有限。如果我以正确的方式编写查询,我可以获得结果的QStringList
,迭代该QStringList
,然后将数据存储在某个地方供以后使用。
但是,我仍然希望能够直接通过XPath表达式获得文档中的QDomNode
对象集合。一个特定的用例是找到一个"name“属性具有特定值的元素,然后用一个新元素替换该元素。这就是为什么我想要QDomNode
对象本身,而不仅仅是QXmlQuery
可以提供的一些基于字符串的表示或其他表示。对于刚才提到的特定用例,我使用QDomElement.elementsByTagName()
并迭代这些元素,但它不像XPath那样灵活,也不像case那样酷。
这只是痴心妄想吗?开发一些实现QAbstractXmlReceiver
接口的新类是否值得呢?或者,我最终会得到一个与QDomDocument
中的QDomNode
对象没有直接关系的新数据集合吗
https://stackoverflow.com/questions/56062025
复制相似问题