【发布时间】:2013-06-25 03:16:57
【问题描述】:
我得到以下 xml
<Tra Type="SomeText">
<tr>Abcdefghij qwertzu</tr>
<Rr X="0.0000" Y="0.0000" Z="0.0000" A="0.0000" B="0.0000" C="0.0000" />
<Ar A1="0.0000" A2="0.0000" A3="0.0000" A4="0.0000" A5="0.0000" A6="0.0000" />
<Er E1="0.0000" E2="0.0000" E3="0.0000" E4="0.0000" E5="0.0000" E6="0.0000" />
<Te T21="1.09" T22="2.08" T23="3.07" T24="4.06" T25="5.05" T26="6.04" T27="7.03" T28="8.02" T29="9.01" T210="10.00" />
<D>125</D>
<IP></IP>
</Tra>
通过将其保存在名为 Data 的 QByteArray 中的套接字。
我想从 xml 中提取每个值并将其保存到不同的变量中(有些是整数,有些是 QString)。
我的主要问题是我不知道如何区分像 <D>125</D> 这样的 xml 字符串与标签之间的值和像 <Te T210="10.00" T29="9... /> 这样在标签字符串本身中获得值的 xml 字符串。
到目前为止,我的代码如下所示:
QByteArray Data = socket->readAll();
QXmlStreamReader xml(Data);
while(!xml.atEnd() && !xml.hasError())
{
.....
}
【问题讨论】:
-
这取决于您的 XML 方案 - 使用 readElementText() 获取元素内的文本,使用 attributes() 访问属性。
标签: c++ xml qt parsing qbytearray