Python での XML 検証手法

王林
王林オリジナル
2023-08-09 14:36:241661ブラウズ

Python での XML 検証手法

Python の XML 検証テクノロジ

XML (eXtensible Markup Language) は、データの保存と送信に使用されるマークアップ言語です。 Python では、XML ファイルが事前定義された構造と仕様に準拠していることを確認するために、XML ファイルを検証する必要があることがよくあります。この記事では、Python の XML 検証テクノロジを紹介し、コード例を示します。

  1. DTD を使用して XML を検証する

DTD (Document Type Definition) は、XML ドキュメントの構造と規則を定義するドキュメントです。 DTD を使用して、XML ファイルが正しい形式であることを確認できます。簡単な XML ファイルの例を次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE data [
  <!ELEMENT data (item*)>
  <!ELEMENT item (name, price)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT price (#PCDATA)>
]>
<data>
  <item>
    <name>苹果</name>
    <price>10</price>
  </item>
  <item>
    <name>香蕉</name>
    <price>5</price>
  </item>
</data>

xml.etree.ElementTree モジュールの DTD を使用して、XML ファイルを検証できます。以下にサンプルコードを示します。

import xml.etree.ElementTree as ET

dtd = ET.DTD("""<!ELEMENT data (item*)>
                <!ELEMENT item (name, price)>
                <!ELEMENT name (#PCDATA)>
                <!ELEMENT price (#PCDATA)>""")

tree = ET.parse('data.xml')
root = tree.getroot()

if dtd.validate(root):
    print("XML文件验证通过")
else:
    print("XML文件验证失败")

上記のコードを実行すると、XML ファイルの形式が正しい場合、「XML ファイルの検証に合格しました」と出力されます。

  1. XML スキーマを使用した XML の検証

XML スキーマは、XML ドキュメントの構造と制約を定義するために使用される言語です。 DTD と比較して、XML スキーマはより強力です。以下は簡単な XML スキーマの例です。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="data">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="item" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="name" type="xs:string"/>
              <xs:element name="price" type="xs:float"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

xmlschema ライブラリを使用して、XML ファイルが XML スキーマ仕様に準拠しているかどうかを確認できます。以下にサンプルコードを示します。

import xmlschema

schema = xmlschema.XMLSchema("""<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
                                <xs:element name="data">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="item" maxOccurs="unbounded">
                                        <xs:complexType>
                                          <xs:sequence>
                                            <xs:element name="name" type="xs:string"/>
                                            <xs:element name="price" type="xs:float"/>
                                          </xs:sequence>
                                        </xs:complexType>
                                      </xs:element>
                                    </xs:sequence>
                                  </xs:complexType>
                                </xs:element>
                              </xs:schema>""")

if schema.is_valid('data.xml'):
    print("XML文件验证通过")
else:
    print("XML文件验证失败")

上記のコードを実行すると、XML ファイルの形式が正しい場合、「XML ファイルの検証に合格しました」と出力されます。

  1. XPath を使用した XML の検証

XPath は、XML ドキュメント内のノードを見つけるための言語です。 XPath を使用して XML ファイルの内容を検証できます。以下にサンプルコードを示します。

import xml.etree.ElementTree as ET

tree = ET.parse('data.xml')
root = tree.getroot()

# 验证name节点是否包含文本
for name in root.findall('.//name'):
    if not name.text:
        print("XML文件验证失败")
        break
else:
    print("XML文件验证通过")

上記のコードを実行すると、XML ファイル内のすべての名前ノードにテキストが含まれている場合、「XML ファイル検証に合格しました」と出力されます。

概要:

この記事では、DTD、XML スキーマ、XPath を使用した XML ファイルの検証など、Python での XML 検証テクノロジを紹介します。 XML ファイルを検証することで、事前定義された構造と仕様に従っていることを確認でき、データの精度と信頼性が向上します。実際の開発では、ニーズに応じて適切な検証方法を選択できます。この記事の概要とサンプル コードを通じて、読者は XML 検証の基本的な技術と使用法を習得できると思います。

以上がPython での XML 検証手法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。