Pesquisa avançada em XML

0

Eu tenho o arquivo XML que contém 130k linhas. Digamos que ele tenha muitas tags que tenham sub-tags repetidas.

<tag1>
<subtag1></subtag1>
<subtag2>something</subtag2>
</tag1>
...
...
<tag1>
<subtag1>something</subtag1>
<subtag2>something</subtag2>
</tag1>

e todos devem ter a mesma quantidade de linhas. Eu gostaria de pesquisar em todo o arquivo (130k linhas) para encontrar tags que contenham mais ou menos linhas do que deveria. Qual método apropriado para isso seria? Usando o Notepad ++ agora.

    
por Petras Paludnevičius 27.02.2018 / 10:53

1 resposta

1

Este XML

$ cat Petras.xml
<doc>
<tag1>
<subtag1></subtag1>
<subtag2>something</subtag2>
</tag1>
<tag1>
<subtag1>something</subtag1>
<subtag2>something</subtag2>
</tag1>
</doc>

Pode ser validado contra este XSD

$ cat Petras.xsd
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="doc">
    <xs:complexType>
      <xs:sequence>

        <xs:element name="tag1" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="subtag1" type="xs:string" minOccurs="1"/>
              <xs:element name="subtag2" type="xs:string" minOccurs="1"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>

      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>

Usando, por exemplo, xmllint

$ xmllint --schema Petras.xsd Petras.xml
<?xml version="1.0"?>
<doc>
<tag1>
<subtag1/>
<subtag2>something</subtag2>
</tag1>
<tag1>
<subtag1>something</subtag1>
<subtag2>something</subtag2>
</tag1>
</doc>
Petras.xml validates
    
por 27.02.2018 / 12:55