2

例子-

<Envision>
      <Employee>
         <Employee-code>Shiva kumar</Employee-code>
         <Employee-Name>474</Employee-Name>
      </Employee>
  <Employee>
         <Employee-code>Santhosh Kumar</Employee-code>
         <Employee-Name>475</Employee-Name>
      </Employee>
</Envision>

我想创建一个 xml 文件,如上所示 xml。但我只能这样做 -

<Employee>
<Employee-code>Shiva kumar</Employee-code>
<Employee-name>474</Employee-name>
<Employee>

</Envision>

通过以下代码-

DocumentBuilderFactory 工厂=DocumentBuilderFactory.newInstance();

  DocumentBuilder builder=factory.newDocumentBuilder();

  Document doc=builder.newDocument();

  Element root=doc.createElement("Envision");

  doc.appendChild(root);

  Element ele=doc.createElement("Employee_Name");
  ele.appendChild(doc.createTextNode("Shiva Kumar"));
  root.appendChild(ele);

  ele=doc.createElement("Employee_Code");
  ele.appendChild(doc.createTextNode("474"));
  root.appendChild(ele);

  TransformerFactory transformerFactory =TransformerFactory.newInstance();
  Transformer transformer = transformerFactory.newTransformer();
  DOMSource source = new DOMSource(doc);
  StreamResult result =  new StreamResult(System.out);
  transformer.transform(source, result);

每当我想通过将下面的代码附加到员工代码标记之后的上面代码来向该代码添加第二个块时

  Element root1=doc.createElement("Envision");

  doc.appendChild(root1);


      ele=doc.createElement("Employee_Name");
  ele.appendChild(doc.createTextNode("Vijay Babu"));
  root1.appendChild(ele);

  ele=doc.createElement("Employee_Code");
  ele.appendChild(doc.createTextNode(""));
  root1.appendChild(ele);

然后我收到一条错误消息,例如“不允许创建节点”。在这种情况下请帮助我

4

3 回答 3

1

您不能创建第二个根元素——这在 XML 中是完全无效的。但你不需要。您需要做的就是重用现有的根元素。查看问题顶部的 XML - 它只有一个根元素,有两个Employee元素,对吧?

顺便说一下,不清楚为什么你不创建Employee元素。您当前正在直接在 下创建Employee_Name,这与您的示例 XML 不匹配。Employee_CodeEnvision

我建议像这样提取员工添加代码:

private static void addEmployee(Document doc, String name, String code) {
    Element employee = doc.createElement("Employee");
    doc.getDocumentElement().appendChild(employee);

    Element nameElement = doc.createElement("Employee_Name");
    nameElement.appendChild(doc.createTextNode(name));
    employee.appendChild(nameElement);

    Element codeElement = doc.createElement("Employee_Code");
    codeElement.appendChild(doc.createTextNode(name));
    employee.appendChild(codeElement);
}

然后:

Document doc = builder.newDocument();        
Element root = doc.createElement("Envision");        
doc.appendChild(root);

addEmployee(doc, "Shiva Kumar", "474");
addEmployee(doc, "Vijay Babu", "");

(或者,您可以更改addEmployee为将元素附加到。)

于 2012-12-07T12:58:37.160 回答
0

XML 文件只能有一个根元素。因此,如果您确实需要更多Envision节点,请为它们创建一个根节点,例如ENVISIONS

<ENVISIONS>
  <ENVISION>
  ...
  <ENVISION>
  <ENVISION>
  ...
  <ENVISION>
</ENVISIONS>

你没有忘记创建EMPLYEE节点吧?

于 2012-12-07T12:59:17.100 回答
0

一旦创建了根元素,就不能再创建另一个根元素并将其附加到文档中。

doc.appendChild(root);

如果您想获取该根元素以稍后将另一个员工元素附加到它,您可以调用 doc.getDocumentElement()

Element root1=doc.getDocumentElement()
于 2012-12-07T13:00:26.693 回答