XML en ajoutant le même élément comme un enfant (prise en HIERARCHY_REQUEST_ERR)

Comment puis-je ajouter le même élément comme un enfant. Je veux quelque chose comme ceci:

<family>
  <parent name = "P1">
    <child name = "P1C1">
        <child name = "P1C1C1"/>
        <child name = "P1C1C2"/>
    </child>
    <child name = "P1C2"/>
    <child name = "P1C3">
      <child name = "P1C3C1"/>
    </child>
  </parent>
  <parent name = "P2">
    <child name = "P2C1">
        <child name = "P2C1C1"/>
    </child>
    <child name = "P2C2">
        <child name = "P2C2C1"/>
    </child>
  </parent>
</family>

Si j'essaye de créer un élément enfant et de l'ajouter à un autre enfant de ce que je reçois:

HIERARCHY_REQUEST_ERR: Une tentative a été faite pour insérer un nœud où il n'est pas permis.

Comment peut-on générer la au-dessus de l'arborescence XML?

Également voir l'image plus grande pour la solution, je suis bâtiment:
Générer du code XML de mapping d'un appel récursif à la recherche dans l'annuaire

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class ChildofChildXML {
public static void main(String[] args) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = factory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Element root = doc.createElement("family");   
doc.appendChild(root);   
Element parent = doc.createElement("parent");
parent.setAttribute("name","P1");
root.appendChild(parent);
Element childElement = doc.createElement("child");
childElement.setAttribute("name","P1C1");
parent.appendChild(childElement);
Element childElement2 = doc.createElement("child"); //Works
childElement2.setAttribute("name","P1C1C1");
childElement.appendChild(childElement2);
/*
childElement = doc.createElement("child");
childElement.setAttribute("name","P1C1C1");
//Not allowed - HIERARCHY_REQUEST_ERR: 
childElement.appendChild(childElement); 
*/
childElement = doc.createElement("child");
childElement.setAttribute("name","P1C2");
parent.appendChild(childElement);
TransformerFactory tranFactory = TransformerFactory.newInstance();
Transformer aTransformer = tranFactory.newTransformer();
aTransformer.setOutputProperty("indent", "yes");
Source src = new DOMSource(doc);
Result dest = new StreamResult(System.out);
aTransformer.transform(src, dest);  
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}

Maintenant le code doit être fusionné avec un recursive 'étendre archive" l'appel et c'est là que je me demande comment faire pour ajouter un enfant de enfant que j'ai besoin pour appliquer la solution à la récursivité - où je suis à l'expansion d'un haut niveau de fichier de l'archive à l'aide de java.util.zip. L'ici est l'équivalent du dossier qui contient le haut niveau de l'archive que les parents et les autres noeuds sont l'équivalent du contenu des archives de manière récursive. De l'oreille pourrait avoir une guerre ou un bocal. La guerre pourrait avoir de jsp et WEB-INF/lib/x.jar et WEB-INF/lib/x.jar doit être élargi encore et ainsi de suite et cet enfant --> enfant --> enfant de la relation de travail est construite à partir de la mère.

  • S'il vous plaît montrer le code qui est défaillant... et est-ce dans une DTD particulière?
  • J'ai ajouté un code simple et aussi la plus grande image de l'exigence d'un lien.
InformationsquelleAutor rommel | 2012-03-13