在QT中读取SAX中的一堆标签

时间:2010-12-13 22:43:48

标签: xml qt sax

我正在使用QXMLSimpleReader通过SAX解析XML文件。

我知道这违反了SAX的原则,但有没有一种巧妙的方法来获取父标签的内容而无需手动重新组装它?

例如,给出以下XML示例(不是真实的):

<record>
  <person level="manager">
    <personal>
      <male/>
      <birthday>2010-12-13T20:00</birthday>
      <promotions>2</promotions>
      <salary high="200000"/>
    </personal>
  </person>
</record>

我想抓一个包含所有个人标签的字符串,即

<male/>
<birthday>2010-12-13T20:00</birthday>
<promotions>2</promotions>
<salary high="200000"/>

问题是,SAX会自动将所有内容拆分为原子标记,以便个人标记解析为空。

理想的QT 2.3解决方案!

2 个答案:

答案 0 :(得分:1)

您可以尝试QXmlStreamReader。它不是SAX,但它快速且易于使用。正如文档所说:

QXmlStreamReader is a faster and more convenient replacement for Qt's own
SAX parser (see QXmlSimpleReader).

另外,Qt 2.3?!

答案 1 :(得分:1)

一种方法是在QXmlContentHandler :: startElement中设置一个标志,如果localName是“personal”并在相应的endElement中重置它。如果设置了标志,则必须写出所有* startElement * s,包括所有属性,所有* 字符 * s和所有* endElement *第

更简单的方法是忘记xml并将xml内容放在QString中,并使用QString :: indexOf和QString :: mid提取有趣的部分。