XML 高级搜索

XML 高级搜索

我得到了一个包含 130k 行的 XML 文件。假设它包含大量标签,并且有重复的子标签。

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

并且所有行数都应相同。我想搜索整个文件(130k 行)以查找包含比应有行数多或少的行数的标签。哪种方法合适?现在使用 Notepad++。

答案1

此 XML

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

可以根据此 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>

例如,使用 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

相关内容