2010-11-10 2 views
1

Я пытаюсь получить текстовое содержимое первого узла в этом XML. Первый узел (франшиза) является узлом элемента, когда я получаю текстовое содержание, я получаю «Календарный год $ 1500 $ 1500 $ 3000» вместо того, чтобы просто «Календарный год»Получение текстового содержимого узла элемента xml

<Item type="Deductible" name="Deductible" id="a">Calendar Year 
<Item type="Text" name="Individual" id="b">$1,500</Item> 
<Item type="Text" name="Individual Out-of-network" id="id_4">$1,500</Item> 
<Item type="Text" name="Family" id="c">$3,000</Item> 
<Item type="Text" name="Family Out-of-network:" id="id_5">$3,000</Item> 
</Item> 

Это то, что я пытаюсь

dbuilder = dbc.newDocumentBuilder(); 
Document doc = dbuilder.parse(new InputSource(new StringReader(plan.getProvisions()))); 
NodeList nl = doc.getElementsByTagName("Item"); 
for(int i = 0 ; i < nl.getLength(); i++){ 
    if(i == row){ 
     org.w3c.dom.Element e = (org.w3c.dom.Element)nl.item(i); 
     value = e.getTextContent(); 
    } 
} 
+0

Опубликуйте код, который используете. Похоже, вы выбираете все дочерние узлы, а также Deductible, но без дополнительной информации это не представляется возможным рассказать. Кроме того, ваш XML-пример неполный (без закрытия/вычитания) –

+0

Я не думаю, что он неполный. – yogsma

+0

Ваш XML хорошо сформирован, но у вас смешанный контент, т. Е. Элемент Item с типом Deductible содержит как текст, так и другие элементы Item. Это намеренно? – corriganjc

ответ

3

Если корневой тег <Item type="Deductible" ... вы можете сделать doc.getDocumentElement().getChildNodes().item(0).getNodeValue();

в противном случае вы можете проверить type атрибут VAL ue для определения элемента Item в нодлисте, полученном от getElementsByTagName("Item");.

Я бы использовал API Java(1.5) XPath, чтобы выбрать элементы Item/@type='Deductible'.

+0

doc.getDocumentElement(). GetTextContent(); все равно получит весь текст, потому что Item с атрибутом deductible содержит другие элементы Item. Их текст также относится к элементу [@ type = 'Deductible']. – corriganjc

+0

@corrganjc: Спасибо, исправлено. – khachik