Je n'ai pas le fichier xsd d'un document XML, donc je dois changer par défaut xmlns "http://www.w3.org/2001/XMLSchema-instance" pour pars les éléments XML, mais il y a un problème à faites-le, quand je change l'attribut xmlns de l'élément racine (myroot) un autre attribut (xmlns) est créé dans l'élément enfant (data) avec la valeur "myxsd.xsd". Je veux ignorer ou modifier la valeur de xmlns (myxsd.xsd) pour analyser correctement le document.JDOM2, xmlns (xsd) c'ant modifier ou supprimer du document XML
Mon XML Entrée:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<myroot xmlns="myxsd.xsd" class="15">
<data att1="all" att2="actual">
<myobject patt1="patt1_value" patt2="patt2_value" patt3="patt3_value">
<p name="p1">page1</p>
<p name="p2">page1</p>
<p name="p3">page1</p>
<p name="p4">page4</p>
</myobject>
</data>
</myroot>
Ma sortie XML:
<?xml version="1.0" encoding="UTF-8"?>
<myroot xmlns="http://www.w3.org/2001/XMLSchema-instance" class="15">
<data xmlns="myxsd.xsd" att1="all" att2="actual">
<myobject patt1="patt1_value" patt2="patt2_value" patt3="patt3_value">
<p name="p1">page1</p>
<p name="p2">page1</p>
<p name="p3">page1</p>
<p name="p4">page4</p>
</myobject>
</data>
</myroot>
Mon code:
public void Edit_file() throws JDOMException, IOException {
InputStream in = new FileInputStream("C:\\small_test.xml");
SAXBuilder builder = new SAXBuilder();
Document document = builder.build(in);
// getting the root element
Element root = document.getRootElement();
Namespace tempNamespace = Namespace.getNamespace("http://www.w3.org/2001/XMLSchema-instance");
root.setNamespace(tempNamespace);
// iterating over the children
List<Element> data = root.getChildren("data");
for (Element element : data) {
Attribute id = element.getAttribute("att1");
id.setValue("New value");
}
XMLOutputter xmlOutput = new XMLOutputter();
xmlOutput.setFormat(Format.getPrettyFormat());
xmlOutput.output(document, System.out);
}
Je veux supprimer l'attribut xmlns du fichier XML d'entrée, mais je ne sais pas comment le faire. –
Ensuite, la première chose que vous devez comprendre est l'effet des attributs xmlns dans le XML source sur les noms et autres propriétés des nœuds dans la représentation JDOM du XML analysé. Désolé si j'ai échoué à expliquer cela. Je vais réessayer: un attribut xmlns sur l'élément le plus externe change l'URI d'espace de nom de chaque élément de l'arbre, et pour se débarrasser de l'espace de noms, vous devez changer le nom de chaque élément. –