Как создать объект XML из строки в Java? - PullRequest
43 голосов
/ 30 сентября 2011

Я пытаюсь написать код, который поможет мне создать объект XML. Например, я дам строку в качестве входных данных для функции, и она вернет мне XMLObject.

XMLObject convertToXML(String s) {}

Когда я искал в сети, я обычно видел примеры создания XML-документов. Итак, все, что я видел в создании XML, записи в файл и создании файла. Но я сделал что-то подобное:

Document document = new Document();
Element child = new Element("snmp");
child.addContent(new Element("snmpType").setText("snmpget"));
child.addContent(new Element("IpAdress").setText("127.0.0.1"));
child.addContent(new Element("OID").setText("1.3.6.1.2.1.1.3.0"));
document.setContent(child);

Как вы думаете, достаточно ли создать объект XML? а также не могли бы вы помочь мне, как получить данные из XML? Например, как я могу получить IpAdress из этого XML?

Спасибо всем большое

РЕДАКТИРОВАТЬ 1: На самом деле сейчас я подумал, что, возможно, мне будет гораздо проще иметь файл типа base.xml, я напишу все основные вещи в него, например:

<snmp>
<snmpType><snmpType>
<OID></OID>
</snmp>

, а затем используйте этот файл для создания объекта XML. Что ты об этом думаешь?

Ответы [ 2 ]

82 голосов
/ 30 сентября 2011

Если вы можете создать строку xml, вы можете легко преобразовать ее в объект документа xml, например -

String xmlString = "<?xml version=\"1.0\" encoding=\"utf-8\"?><a><b></b><c></c></a>";  

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
DocumentBuilder builder;  
try {  
    builder = factory.newDocumentBuilder();  
    Document document = builder.parse(new InputSource(new StringReader(xmlString)));  
} catch (Exception e) {  
    e.printStackTrace();  
} 

Вы можете использовать объект документа и библиотеки синтаксического анализа xml или xpath для возврата IP-адреса.

11 голосов
/ 30 сентября 2011

попробуйте что-то вроде

public static Document loadXML(String xml) throws Exception
{
   DocumentBuilderFactory fctr = DocumentBuilderFactory.newInstance();
   DocumentBuilder bldr = fctr.newDocumentBuilder();
   InputSource insrc = new InputSource(new StringReader(xml));
   return bldr.parse(insrc);
}
...