2013-08-08 6 views
-1

Пожалуйста, обратитесь к примеру XML-файлуСинтаксический Complex XML файл в Java с помощью Dom Parser со структурой гетерогенного узла

<root> 
<A id="101"> 
<B></B> 
<C id="Hello" name="World"> </C> 
<D id="First D"> </D> 
</A> 
<X id="102"> Shawn </X> 
<Y id="Java World"> </Y> 
<Z> Cool </Z> 
<D id="Second D"> </D>  
</root> 

Я хочу, чтобы отобразить метку «D» с ID = «Второй D» с помощью Java Dom Parser функциональность.

Пожалуйста, помогите мне в этом.

ответ

0

Прежде всего, я бы определил, какую библиотеку DOM-Parser вы хотите использовать. Я предпочитаю JDOM2. В Интернете есть много учебников. Единственное, что вам нужно сделать, это просто прочитать документ (строка в JDOM-Document), а затем doc.getRootElement(). GetChildText («D»). Конечно, вы должны сделать некоторые проверки ошибок, например, если чтение в документе равно null или корневому элементу и так далее. Я думаю, этого достаточно, чтобы помочь вам выполнить работу самостоятельно.

РЕДАКТИРОВАТЬ: Я видел, что ваш XML-файл не структурирован так, как вы можете видеть с последней строкой, где у вас есть закрывающий тег, но был закрыт в той же строке выше.

+0

@ Hasan- Спасибо за ответ. Но doc.getRootElement(). GetChildText («D») возвращает оба значения D, то есть First D и Second D. Так как они из общей структуры дерева родителей, и мне нужно отображать только «Second D», это было бы отлично, если бы вы могли поделиться любым таким решением. FYI: Я отредактировал XML, как было предложено. Спасибо –

+0

Я думаю, что он не может этого сделать или вы описали другую xml-структуру. Поскольку у вас есть первый D как ребенок A, а второй D - это ребенок вашего корня ... На самом деле не должно быть возможности получить первый D. Но если вы хотите получить второе, выполните getAttribute и проверьте, id равен вашему желаемому id-значению. – hasan

0

@ Шива. Пожалуйста, попробуйте приведенный ниже код и дайте мне знать результат.

XPath xPath = XPathFactory.newInstance().newXPath(); 
String expression = "/root/D[@id='Second D']/text()"; 
NodeList nodeList1 = (NodeList) xPath.compile(expression).evaluate(doc, XPathConstants.NODESET); 
for (int i = 1; i <= nodeList1.getLength(); i++) { 
System.out.println(nodeList1); 
} 

Предложение: Если файл XML имеет меньше содержание затем пойти на DOM Parser, потому что это простой в использовании с помощью XPath.

 Смежные вопросы

  • Нет связанных вопросов^_^