Добавить префикс для всех тегов XmlObject - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть строка XML и я хочу создать новый элемент Dom, используя эту строку XML, добавив префикс "peci" ко всем тегам этого XML.это мой код:

Document Effective_Change=null;                 
factory=XmlObject.Factory.parse(NewElement);
                    String testxml =factory.toString();
                    System.out.println(testxml);
                    DocumentBuilderFactory fact = DocumentBuilderFactory.newInstance();  
                    fact.setNamespaceAware(true);
                    DocumentBuilder build; 
                    build = fact.newDocumentBuilder();
                    Effective_Change = build.parse(new InputSource(new StringReader(testxml)));
                    Effective_Change.setPrefix("peci");
                     System.out.println(factory.xmlText());

в начале tesxml содержит:

<peci:xml-fragment xmlns:peci="urn:com.url/peci">
  <Derived_Event_Code>xx</Derived_Event_Code>
  <Effective_Moment>2018-07-23T04:20:04</Effective_Moment>
  <Entry_Moment>2018-07-23T04:20:04</Entry_Moment>
  <Person_Identification isUpdated="1">
    <Government_Identifier isDeleted="1">
      <Government_ID>xxxxx</Government_ID>
      <Government_ID_Type>xxxxxx/Government_ID_Type>
      <Issued_Date>xxxxx</Issued_Date>
    </Government_Identifier>
  </Person_Identification>
</peci:xml-fragment>

, но я отыграл в этой строке

Effective_Change.setPrefix("peci");

я получаю эту ошибку:

org.w3c.dom.DOMException: NAMESPACE_ERR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces.
    at org.apache.xerces.dom.NodeImpl.setPrefix(NodeImpl.java:701)

и что я хочу получить в результате:

<peci:xml-fragment xmlns:peci="urn:com.url/peci">
  <peci:Derived_Event_Code>xx</peci:Derived_Event_Code>
  <peci:Effective_Moment>2018-07-23T04:20:04</peci:Effective_Moment>
  <peci:Entry_Moment>2018-07-23T04:20:04</peci:Entry_Moment>
  <peci:Person_Identification isUpdated="1">
    <peci:Government_Identifier isDeleted="1">
      <peci:Government_ID>xxxxx</peci:Government_ID>
      <peci:Government_ID_Type>xxxxxx</peci:Government_ID_Type>
      <peci:Issued_Date>xxxxx</peci:Issued_Date>
    </peci:Government_Identifier>
  </peci:Person_Identification>
</peci:xml-fragment>
...