Exemple
curl http://www.php.cn /ip/?q=8.8.8.8 2>/dev/null | xmllint --html --xpath " //ul[@id='csstb']" - 2>/dev/null | sed -e 's/<[^>]*>//g'
Dans l'exemple ci-dessus, il s'agit principalement via Après avoir interrogé la propriété de l'adresse IP sur 123cha, seul le contenu de la partie texte est obtenu en extrayant le résultat (ul#csstb). Les résultats après l'exécution de l'instruction de script ci-dessus sont les suivants :
[Votre requête] :8.8.8.8
Données principales de ce site :
États-Unis
Données secondaires de ce site : Fournisseur DNS public Google : hypo
États-Unis Fournisseur DNS public Google gratuit Google : zwstar Données de référence 1 : États-Unis
Données de référence 2 : États-Unis
Jetons un coup d'œil à l'utilisation d'autres paramètres principaux avec des exemples.
1. --format
Ce paramètre est utilisé pour formater le XML afin de le rendre lisible.
Supposons qu'il existe un fichier XML (person.xml) avec le contenu suivant :
Après avoir effectué les opérations suivantes, la sortie sera dans un format XML plus lisible :
#xmllint --format person.xml <?xml version="1.0"?> <person> <name>ball</name> <age>30</age> <sex>male</sex> </person>
2. est l'opposé de --format, parfois Afin d'économiser le volume de transmission, nous souhaitons supprimer les blancs dans XML. Dans ce cas, nous pouvons utiliser la commande --noblanks.
Supposons que le contenu de XML (person.xml) soit le suivant<?xml version="1.0"?> <person> <name>ball</name> <age>30</age> <sex>male</sex> </person>
#xmllint --noblanks person.xml <?xml version="1.0"?> <person><name>ball</name><age>30</age><sex>male</sex></person>
Utilisez un schéma pour vérifier l'exactitude du fichier XML (le schéma XML est un remplacement basé sur XML pour
person.xml valide
Remarque : Par défaut, le contenu du fichier vérifié sera affiché après vérification. Vous pouvez utiliser l'option --noout pour supprimer cette sortie, afin que nous puissions obtenir uniquement les résultats de la vérification finale.<?xml version="1.0"?> <person> <name>ball</name> <age>30</age> <sex>male</sex> </person>
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="name" type="xs:string"/> <xs:element name="age" type="xs:integer"/> <xs:element name="sex"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="male"/> <xs:enumeration value="female"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="person"> <xs:complexType> <xs:all> <xs:element ref="name"/> <xs:element ref="age"/> <xs:element ref="sex"/> </xs:all> </xs:complexType> </xs:element> </xs:schema>
Maintenant, nous modifions person.xml pour que le champ d'âge de ce fichier et le sexe ne répond pas à la définition de xsd.
#xmllint --schema person.xsd person.xml <?xml version="1.0"?> <person> <name>ball</name> <age>30</age> <sex>male</sex> </person>
4. À propos de la sortie de --schema
Avant de parler de la sortie, examinons le scénario suivant si vous souhaitez exécuter xmllint via php et obtenir le résultat de retour. , votre code est généralement Il devrait ressembler à ceci valid.php
Nous gardons l'erreur dans person.xml ci-dessus.
#xmllint --noout --schema person.xsd person.xml person.xml:4: element age: Schemas validity error : Element 'age': 'not age' is not a valid value of the atomic type 'xs:integer'. person.xml:5: element sex: Schemas validity error : Element 'sex': [facet 'enumeration'] The value 'test' is not an element of the set {'male', 'female'}. person.xml:5: element sex: Schemas validity error : Element 'sex': 'test' is not a valid value of the local atomic type. person.xml fails to validate
(0) {}, incroyable !
Pourquoi cela se produit-il ?
Le paramètre de sortie de exec ne peut obtenir que le contenu affiché par la sortie standard (stdout).
Donc, pour obtenir le message d'erreur, nous devons rediriger l'erreur standard vers la sortie standard et modifier le code en conséquence :<?php $command = "xmllint --noout --schema person.xsd person.xml"; exec($command, $output, $retval); //出错时返回值不为0 if ($retval != 0){ var_dump($output); } else{ echo "yeah!"; }
$command = "xmllint --noout --schema person.xsd person .xml 2>$1"; Exécutez à nouveau valid.php et obtenez le message d'erreur avec succès !
Exemple
Puis écrivez po.xml Le schéma Le fichier est nommé po.xsd et a le contenu suivant :
Utilisez xmllint pour vérifier le fichier po.xml :
$ xmllint -schema po.xsd po.xml S'il n'y a pas de message d'erreur, cela signifie que la vérification a réussi.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!