EDIT: проблема найдена. Я добавлял элементы в документ, когда он должен был быть добавлен в «rootElement». Работаю сейчас. Если у вас есть какие-либо дополнительные предложения относительно того, как лучше сделать мой код, пожалуйста, дайте мне знатьПытается создать XML-файл в Java - Получение DOMException: HIERARCHY_REQUEST_ERR
В следующем коде я пытаюсь как вручную внести запись в файл XML, так и немного упростить ее бит с функцией.
Я получаю сообщение об ошибке «HIERARCHY_REQUEST_ERR». Я знаю, что проблема связана со следующим кодом в нижней части моей функции, но я не знаю, как с этим бороться. Когда я избавлюсь от doc.appendChild (staff), я избавлюсь от проблемы, но, очевидно, не добавляет новую запись.
Элемент штата = doc.createElement («Персонал»); doc.appendChild (штат);
Спасибо за внимание!
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
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 createXMLfile {
public static void main(String [] args) throws ParserConfigurationException, TransformerException{
String address = "/home/leor/workspace/Test/Files/src/outputFile.xml";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.newDocument();
Element rootElement = doc.createElement("Company");
doc.appendChild(rootElement);
// EMPLOYEE #1
//-----------------------------------------------------------//
Element staff = doc.createElement("Staff");
rootElement.appendChild(staff);
staff.setAttribute("id", "1");
Element firstName = doc.createElement("First_Name");
firstName.appendChild(doc.createTextNode("John"));
staff.appendChild(firstName);
Element lastName = doc.createElement("Last_Name");
lastName.appendChild(doc.createTextNode("Smith"));
staff.appendChild(lastName);
Element salary = doc.createElement("Salary");
salary.appendChild(doc.createTextNode("120,000"));
staff.appendChild(salary);
//-----------------------------------------------------------//
createNewEntry(doc, "2", "Leo", "Benner", "90,000");
createNewEntry(doc, "3", "Sarah", "Gordon", "75,000");
createNewEntry(doc, "4", "Scott", "Jones", "55,000");
//-----------------------------------------------------------//
TransformerFactory f = TransformerFactory.newInstance();
Transformer tf = f.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult r = new StreamResult(new File(address));
tf.transform(source, r);
System.out.println("File created.");
}
//-----------------------------------------------------------//
public static void createNewEntry(Document doc, String id, String fName, String lName, String sal){
Element staff = doc.createElement("Staff");
doc.appendChild(staff);
staff.setAttribute("id", id);
Element firstName = doc.createElement("First_Name");
firstName.appendChild(doc.createTextNode(fName));
staff.appendChild(firstName);
Element lastName = doc.createElement("Last_Name");
lastName.appendChild(doc.createTextNode(lName));
staff.appendChild(lastName);
Element salary = doc.createElement("Salary");
salary.appendChild(doc.createTextNode(sal));
staff.appendChild(salary);
}
}