J'ai obtenu dtd dans le fichier et je ne peux pas le retirer. Lorsque j'essaie de l'analyser en Java, je reçois "Causé par: java.net.SocketException: Réseau est inaccessible: se connecter", parce que sa distance dtd. puis-je désactiver en quelque sorte la vérification dtd?comment désactiver dtd à l'exécution dans xpath de java?
Répondre
Vous devriez être capable de spécifier votre propre EntityResolver, ou utiliser des fonctionnalités spécifiques de votre analyseur? Voir here pour certaines approches.
Un exemple plus complet:
<?xml version="1.0"?>
<!DOCTYPE foo PUBLIC "//FOO//" "foo.dtd">
<foo>
<bar>Value</bar>
</foo>
et l'utilisation XPath:
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
public class Main {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
builder.setEntityResolver(new EntityResolver() {
@Override
public InputSource resolveEntity(String publicId, String systemId)
throws SAXException, IOException {
System.out.println("Ignoring " + publicId + ", " + systemId);
return new InputSource(new StringReader(""));
}
});
Document document = builder.parse(new File("src/foo.xml"));
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
String content = xpath.evaluate("/foo/bar/text()", document
.getDocumentElement());
System.out.println(content);
}
}
Hope this helps ...
J'ai eu ce problème auparavant. Je l'ai résolu en téléchargeant et en stockant une copie locale de la DTD, puis en la validant par rapport à la copie locale. Vous devez modifier le fichier XML pour qu'il pointe vers la copie locale.
<!DOCTYPE root-element SYSTEM "filename">
Un peu plus d'info ici: http://www.w3schools.com/dtd/dtd_intro.asp
Je pense que vous pouvez également définir manuellement une sorte de propriété validateOnParse « false » dans votre analyseur. Cela dépend de la bibliothèque que vous utilisez pour analyser le XML.
Plus d'infos ici: http://www.w3schools.com/dtd/dtd_validation.asp
Cela a fonctionné pour moi:
SAXParserFactory saxfac = SAXParserFactory.newInstance();
saxfac.setValidating(false);
try {
saxfac.setFeature("http://xml.org/sax/features/validation", false);
saxfac.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
saxfac.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
saxfac.setFeature("http://xml.org/sax/features/external-general-entities", false);
saxfac.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
}
catch (Exception e1) {
e1.printStackTrace();
}
1 - C'est la meilleure réponse ici - cependant il suffit d'utiliser cette ligne seulement: '' saxfac.setFeature ("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); '' –
- 1. Comment désactiver la validation DTD XML dans Oracle DB?
- 2. Validation DTD Java XML
- 3. pas strict xpath pour java
- 4. Java, xml, XSLT: Empêcher la validation DTD
- 5. évaluation XPath commandes avec java
- 6. Comment désactiver le gestionnaire de sécurité Java?
- 7. Validation XML avec une DTD externe en Java
- 8. Comment parcourir XPath récursivement?
- 9. Comment utiliser "not" dans xpath?
- 10. Entités DTD dans le fichier de configuration
- 11. Comment lier xaml à un xpath dynamique?
- 12. Validation XML DTD/Schema dans Maven
- 13. Comment désactiver Response.Buffer
- 14. Où sont conservées les DTD Adobe?
- 15. XPath count dans VBScript
- 16. Comment désactiver la liste de champs à l'exécution dans PerformancePoint?
- 17. Cocoa: NSXMLParser - comment résoudre les entités définies dans la DTD
- 18. manquant iTextSharp DTD
- 19. Utilisation de XPath dans ElementTree
- 20. Comment utiliser XPATH dans MySQL select?
- 21. Comment sélectionner uniquement les éléments visibles à l'aide de XPath?
- 22. XPath personnalisé dans MySQL
- 23. Comment référencer un attribut XML à l'aide de XPath?
- 24. Faire DocumentBuilder.parse ignorer DTD références
- 25. XPath dans Delphi7?
- 26. Comment créer un fichier DLL de fichiers DTD?
- 27. Comment désactiver Draggables dans script.aculo.us
- 28. match de modèle à l'aide requête XPath
- 29. Quel est le meilleur moyen de générer du code de liaison XML à partir d'une DTD?
- 30. C# et XPath - comment interroger
Merci, ce qui a réduit certains tests unitaires que je faisais par un facteur de 7 –