Как получить XML-контент в виде строки

1
<root>
<h id="1">
    <d value="1,2,3,4,5"><open>10:00</open><close>23:00</close></d>
    <d value="6"><open>10:00</open><close>2:00</close></d>
    <d value="7"><open>10:00</open><close>21:00</close></d>
</h>
<h id="2">
</h>
</root>

Здесь у меня есть XML, у которого root имеет список <h> помеченных узлов. Теперь мне нужно разбить их на части и установить их в разные переменные (добавить в карту).

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new InputSource(new ByteArrayInputStream(data.getBytes("utf-8"))));
NodeList nList = doc.getElementsByTagName("h");
for (int i = 0; i < nList.getLength(); i++)
{
    Node nNode = nList.item(i);
    System.out.println(nNode.getAttributes().getNamedItem("id") + " " + ?????);        
}

что мне нужно вызвать, чтобы получить значение (String value) nNode?

Вот что я ищу как asnwer для вышеуказанного кода, как только кто-то заполняет????

1 <h id="1"><d value="1,2,3,4,5"><open>10:00</open><close>23:00</close></d><d value="6">open>10:00</open><close>2:00</close></d><d value="7"><open>10:00</open><close>21:00</close></d></h>
2 <h id="2"></h>

И я не против иметь как корневой элемент

Теги:
dom

4 ответа

2
Лучший ответ

Вы можете использовать Node.getTextContent() чтобы удобно получить весь текст узла (также получает текст детей).

См. Раздел " Разбор содержимого xml файла" без знания структуры XML файла для краткого примера.


Если вы пытаетесь получить value атрибутов d узлов (я не могу сказать, на самом деле, ваш вопрос немного неясно, для меня), то все было бы иначе - за что вы бы перебирать ребенок каждой h узла (используйте getChildNodes() или getFirstChild() + getNextSibling()), затем захватите их атрибуты value же, как вы получаете атрибут id h узлов (приведенная выше ссылка также показывает пример итерации через дочерние узлы).

  • 0
    Я обновил вопрос и добавил требуемый вывод
  • 1
    @ dinesh707 В таком случае; что-то из stackoverflow.com/questions/1219596/… помогает? Ответ Анвера здесь также является хорошим вариантом.
Показать ещё 3 комментария
1

Вы пробовали библиотеку jDom? http://www.jdom.org/docs/apidocs/org/jdom2/output/XMLOutputter.html

 XMLOutputter outp = new XMLOutputter();
 String s = outp.outputString(your_jdom_element);
0

Вы пробовали nNode.toString() если используете узел из javax.xml.soap.Node.

  • 0
    Я использую импорт org.w3c.dom. *;
0

Вы можете использовать это:

http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/Node.html#getTextContent()

но ваш образец nNode имеет другие узлы, а не только текст. Кажется, вам нужен вспомогательный метод для построения String из дочерних узлов.

Передайте свой nNode в nodeToString

XML-узел для строки в Java

Ещё вопросы

Сообщество Overcoder
Наверх
Меню