Я получил XML-файл, который содержит 130 тыс. Строк. Скажем, у него есть множество тегов, которые имеют повторяющиеся суб-теги.

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

и все должно быть одинаковым количеством строк. Я хотел бы провести поиск по всему файлу (130 тыс. Строк), чтобы найти теги, которые содержат больше или меньше строк, чем следует. Какой подходящий метод для этого будет? Используя Notepad++ прямо сейчас.

1 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .