问题标签 [qtxml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
400 浏览

html - 如何不转义 QDomText 中的 HTML 特殊字符?

我正在尝试使用 Qt XML 创建一个包含 Javascript 的 HTML 文档。这是我的 Qt 代码的相关部分:

问题是在 Javascript 代码中,它转义了<用 替换它的字符&lt;,给出了以下不是有效的 Javascript 的输出:

我在 Qt 文档中搜索了解决方案,但没有找到任何解决方案。

一种解决方法可能是在写入文件时通过执行&lt;替换为,但也可能出现我想不理会的 Javascript 代码之外的情况。<stream << document.toString().replace("&lt;", "<")&lt;

我还可以想到一些 Javascript 技巧来检查数字是否为负而不使用任何特殊的 HTML 字符,例如if(String(x).indexOf('-') != -1),但我想知道是否有更好的方法。

我的问题是如何创建一个QDomText包含特殊 HTML 字符(如<>&等)的文本的对象,而不会将它们转义QDomDocument::toString()

0 投票
1 回答
190 浏览

xml - 当 XSD 和 XML 都被验证时,QXmlSchema 和 QXmlSchemaValidator 给出错误

我正在尝试在 Qt 中使用 XSD 模式验证 XML。

根据W3C 模式验证器,XML 和 XSD 似乎是有效的。

这是我执行验证的代码:

text包含必须验证的 XML 文本。SOMSchema_xsd包含 xsd 架构文本。

当我将架构加载到QXmlSchema变量ok中时,cout我可以看到架构和 xml 都已正确加载。我完全看到了他们。

当我执行验证时,result它是假的,在控制台中我可以看到以下消息:

我不知道为什么我会收到这些错误,因为:

  • 文件被正确加载到类中(我可以用 看到它们cout);
  • QXmlSchema加载 xsd 时没有给我任何错误
  • W3C 站点对我说 XML 已经过验证,没有任何问题。

我做错了什么?

0 投票
1 回答
211 浏览

c++ - 如何使用 QString 作为成员变量初始化 QXmlStreamWriter?

我已经实现了自己的 xml 编写器来将 xml 生成为 QString。

我创建了一个类“MyXmlWriter”,其私有成员变量为 QXmlStreamWriter,并尝试在公共方法 writeToString() 中对其进行初始化

在声明头文件中:

在 cpp 文件中:

此错误出现在构建上: 错误:不匹配调用 (QXmlStreamWriter) (QString ) writer(&result); *

如果在本地方法writeToString()中声明了QXmlStreamWriter 写入,那么我无法在私有方法writePart()中访问此写入器 我想在其他方法中使用成员变量“writer”,这就是为什么本地声明不是我的选项.

0 投票
1 回答
197 浏览

xml - 提取 QDomElement 中的整个标签数据

我正在使用 QtXml 来操作一些 svg 文件,我想要做的是,当我在文档中找到特定的 QDomElement 时,我想尝试将整个 xml 元素数据(及其所有子元素)保存到 QString不仅仅是它们的属性和/或标签之间的文本。

想象一下这个标签:(g标签)

我已经可以做的是使用以下代码提取诸如xywidthheight等属性以及标签之间的文本:

但我无法做到并试图联系他们的是获取所有g标签,它是这样的子元素:

有人知道 Qt 库中的 API 函数或其他替代方法吗?或者我必须使用纯 QString 和 QRegExp 类手动遍历 svg (xml) 文件来实现它

0 投票
0 回答
141 浏览

c++ - 读取 QDomElement 的原始值

我有一个 XML 文件,我想从中读取原始值。但是 Qt 将值内容转换为可读的文本......

当我使用以下代码读取值时: msgNode.firstChildElement("source").text();

然后我得到以下结果: Press "acquisition" to validate the measurement

但是,我真的想读取原始值并改为读取Press &quot;save&quot; to validate

有没有办法读取 QDomElement 的原始值,还是我必须使用另一个类才能做到这一点?

0 投票
1 回答
141 浏览

qt - QXmlStreamWriter 在不写入任何文本元素时写入根元素的不同开头

这是没有将任何文本元素写入 xml 文件的代码:

这是输出:

这是想要的输出:

为什么不写任何附加元素时不写根元素的开始?即使没有添加更多元素,有没有办法明确告诉作者写它?同样的事情发生在 C# 中。

0 投票
1 回答
248 浏览

python - 使用 XPath 解析 XML (Collada/Dae) 文件

我想将我的示例从 Qt C++ 重写为 Python。

输入文件(“Plane.dae”)

Qt C++:

我尝试用 Python 重写,但我的示例在下一行被冻结:

主文件

0 投票
1 回答
23 浏览

qt - QDomElement::text() 没有子元素文本?

我有一个像这样的xml:

以及一个解析QDomDocument包装它的递归函数。该函数对s进行迭代QDomNode,将其转换为QDomElements并调用text()方法获取数据。不幸的是,也QDomElement::text()可以在<a>水平上工作并返回:123. 所以它收集了所有嵌套元素的文本。
我希望它返回一个空字符串 bcs,我宁愿不检查tagName()值,因为它们可能很多。所以我宁愿通过haveng/没有文本来检查节点标签,反之亦然。这是可行的吗?是否有一种方法可以<a>为级别返回空字符串和文本值<b>, <c>, <d>
PSQDomNode::nodeValue()为所有元素返回一个空文本。