2016-02-21 1 views
0

Я пытаюсь преобразовать xml в json в определенном формате с помощью библиотеки json. Xml преобразуется в json, но я не знаю, как получить от него настройку.json conversion using json library

Может кто-нибудь пожалуйста, скажите мне решение этой

Мой код, как указано ниже

Код преобразования

File file = new File ("D:\\data.xml"); 
inputStream = new FileInputStream(file); 
StringBuilder builder = new StringBuilder(); 
int ptr = 0; 
while ((ptr = inputStream.read()) != -1) 
{ 
    builder.append((char) ptr); 
} 

String xml = builder.toString(); 
JSONObject jsonObj = XML.toJSONObject(xml); 
System.out.println(jsonObj); 

data.xml

<?xml version="1.0"?> 
<root> 
    <data-element name="Parent1" type="parent" index="0"> 
     <data-element name="Pages" index="0" type="text"> 
      <data-element name="Base" index="0" type="text"> 
       <data-element name="Page" index="0" type="text"> 
        <data-element name="Value" index="0" type="text"> 
         <data-content> 
          <![CDATA[Apple]]> 
         </data-content> 
        </data-element> 
        <data-content> 
         <![CDATA[Red Color]]> 
        </data-content> 
       </data-element> 
       <data-element name="Page" index="1" type="text"> 
        <data-element name="Value" index="1" type="text"> 
         <data-content> 
          <![CDATA[Orange]]> 
         </data-content> 
        </data-element> 
        <data-content> 
         <![CDATA[Orange Color]]> 
        </data-content> 
       </data-element> 
       <data-content> 
        <![CDATA[Fruits]]> 
       </data-content> 
      </data-element> 
      <data-element name="Base" index="0" type="text"> 
       <data-element name="Page" index="0" type="text"> 
        <data-element name="Value" index="0" type="text"> 
         <data-content> 
          <![CDATA[Violet]]> 
         </data-content> 
        </data-element> 
        <data-content> 
         <![CDATA[Beetroot]]> 
        </data-content> 
       </data-element> 
       <data-element name="Page" index="1" type="text"> 
        <data-element name="Value" index="1" type="text"> 
         <data-content> 
          <![CDATA[Orange]]> 
         </data-content> 
        </data-element> 
        <data-content> 
         <![CDATA[Carrot]]> 
        </data-content> 
       </data-element> 
       <data-content> 
        <![CDATA[Vegetables]]> 
       </data-content> 
      </data-element> 
      <data-content type="Child"> 
       <![CDATA[Category1]]> 
      </data-content> 
     </data-element> 
    </data-element> 
    <data-element name="Parent2" type="parent" index="0"> 
     <data-element name="Pages" index="0" type="text"> 
      <data-element name="Base" index="0" type="text"> 
       <data-element name="Page" index="0" type="text"> 
        <data-element name="Value" index="0" type="text"> 
         <data-content> 
          <![CDATA[Apple]]> 
         </data-content> 
        </data-element> 
        <data-content> 
         <![CDATA[Red Color]]> 
        </data-content> 
       </data-element> 
       <data-element name="Page" index="1" type="text"> 
        <data-element name="Value" index="1" type="text"> 
         <data-content> 
          <![CDATA[Central Processing Unit]]> 
         </data-content> 
        </data-element> 
        <data-content> 
         <![CDATA[CPU]]> 
        </data-content> 
       </data-element> 
       <data-content> 
        <![CDATA[Computer]]> 
       </data-content> 
      </data-element> 
      <data-element name="Base" index="0" type="text"> 
       <data-element name="Page" index="0" type="text"> 
        <data-element name="Value" index="0" type="text"> 
         <data-content> 
          <![CDATA[Mobile]]> 
         </data-content> 
        </data-element> 
        <data-content> 
         <![CDATA[Android]]> 
        </data-content> 
       </data-element> 
       <data-element name="Page" index="1" type="text"> 
        <data-element name="Value" index="1" type="text"> 
         <data-content> 
          <![CDATA[Java]]> 
         </data-content> 
        </data-element> 
        <data-content> 
         <![CDATA[Open Source]]> 
        </data-content> 
       </data-element> 
       <data-content> 
        <![CDATA[Programming]]> 
       </data-content> 
      </data-element> 
      <data-content type="Child"> 
       <![CDATA[Category2]]> 
      </data-content> 
     </data-element> 
    </data-element> 
</root> 

Ожидаемое Json

{ 
    "Parent1": { 
    "Category1": { 
     "Fruits": { 
     "Red Color": "Apple", 
     "Orange Color": "Orange" 
     }, 
     "Vegetables": { 
     "Beetroot": "Violet", 
     "Carrot": "Orange" 
     } 
    } 
    }, 
    "Parent2": { 
    "Category2": { 
     "Computer": { 
     "Android": "Mobile" 
     }, 
     "Programming": { 
     "Open Source": "Java" 
     } 
    } 
    } 
} 

Старинное JSON является, как указано ниже

{ 
    "root": { 
    "data-element": [ 
     { 
     "index": 0, 
     "name": "Parent1", 
     "data-element": { 
      "index": 0, 
      "name": "Pages", 
      "data-content": { 
      "content": "Category1", 
      "type": "Child" 
      }, 
      "data-element": [ 
      { 
       "index": 0, 
       "name": "Base", 
       "data-content": "Fruits", 
       "data-element": [ 
       { 
        "index": 0, 
        "name": "Page", 
        "data-content": "Red Color", 
        "data-element": { 
        "index": 0, 
        "name": "Value", 
        "data-content": "Apple", 
        "type": "text" 
        }, 
        "type": "text" 
       }, 
       { 
        "index": 1, 
        "name": "Page", 
        "data-content": "Orange Color", 
        "data-element": { 
        "index": 1, 
        "name": "Value", 
        "data-content": "Orange", 
        "type": "text" 
        }, 
        "type": "text" 
       } 
       ], 
       "type": "text" 
      }, 
      { 
       "index": 0, 
       "name": "Base", 
       "data-content": "Vegetables", 
       "data-element": [ 
       { 
        "index": 0, 
        "name": "Page", 
        "data-content": "Beetroot", 
        "data-element": { 
        "index": 0, 
        "name": "Value", 
        "data-content": "Violet", 
        "type": "text" 
        }, 
        "type": "text" 
       }, 
       { 
        "index": 1, 
        "name": "Page", 
        "data-content": "Carrot", 
        "data-element": { 
        "index": 1, 
        "name": "Value", 
        "data-content": "Orange", 
        "type": "text" 
        }, 
        "type": "text" 
       } 
       ], 
       "type": "text" 
      } 
      ], 
      "type": "text" 
     }, 
     "type": "parent" 
     }, 
     { 
     "index": 0, 
     "name": "Parent2", 
     "data-element": { 
      "index": 0, 
      "name": "Pages", 
      "data-content": { 
      "content": "Category2", 
      "type": "Child" 
      }, 
      "data-element": [ 
      { 
       "index": 0, 
       "name": "Base", 
       "data-content": "Computer", 
       "data-element": [ 
       { 
        "index": 0, 
        "name": "Page", 
        "data-content": "Red Color", 
        "data-element": { 
        "index": 0, 
        "name": "Value", 
        "data-content": "Apple", 
        "type": "text" 
        }, 
        "type": "text" 
       }, 
       { 
        "index": 1, 
        "name": "Page", 
        "data-content": "CPU", 
        "data-element": { 
        "index": 1, 
        "name": "Value", 
        "data-content": "Central Processing Unit", 
        "type": "text" 
        }, 
        "type": "text" 
       } 
       ], 
       "type": "text" 
      }, 
      { 
       "index": 0, 
       "name": "Base", 
       "data-content": "Programming", 
       "data-element": [ 
       { 
        "index": 0, 
        "name": "Page", 
        "data-content": "Android", 
        "data-element": { 
        "index": 0, 
        "name": "Value", 
        "data-content": "Mobile", 
        "type": "text" 
        }, 
        "type": "text" 
       }, 
       { 
        "index": 1, 
        "name": "Page", 
        "data-content": "Open Source", 
        "data-element": { 
        "index": 1, 
        "name": "Value", 
        "data-content": "Java", 
        "type": "text" 
        }, 
        "type": "text" 
       } 
       ], 
       "type": "text" 
      } 
      ], 
      "type": "text" 
     }, 
     "type": "parent" 
     } 
    ] 
    } 
} 
+0

Возможно [это] (http://stackoverflow.com/a/15015482/2368696) поможет вам –

ответ

1

Я хотел бы предложить вам посмотреть на использование XSLT для более преобразования исходного XML в версии XML, что больше может легко конвертировать в JSON, который вы ищете.

В качестве альтернативы вам, скорее всего, понадобится использовать SAX-парсер для итерации по XML и программным образом создать JSON.

+0

Было бы неплохо, если бы я привел пример с примерами, который относится к моему коду –

+0

, вы уже поняли это или сделали вам все еще нужен пример кода? – ra9r