如何将相同的元素添加为子元素。我想是这样的:将XML添加为子元素的相同元素(获取HIERARCHY_REQUEST_ERR)
<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>
如果我试图创建一个子元素,并添加另一个孩子吧,我得到:
HIERARCHY_REQUEST_ERR:试图插入其中,这是不允许的节点。
我们如何生成上面的XML树?
也看到了解决的大局观我建立: Generate XML mapping of a recursive directory search
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());
}
}
}
现在的代码需要用递归“扩大档案”称,这是在那里我想知道如何添加合并因为我需要将解决方案应用于递归 - 我正在使用java.util.zip扩展顶级归档文件。这里相当于包含作为父级的顶级归档的文件夹,后续节点与递归归档的内容相同。所以耳朵可能会有战争或罐子。这场战争可能在它下面有jsp,并且WEB-INF/lib/x.jar和WEB-INF/lib/x.jar需要再次扩展等等,并且这个child - > child - > child关系是由父母建立。
请显示失败的代码...并且这是在特定的DTD中吗? – 2012-03-13 06:33:28
我已经添加了一个简单的代码,也是一个链接的要求更大的图片。 – rommel 2012-03-13 13:11:48