Java XML, анализирующий использующий DOM для получения nodevalue

Я использую Параллели на Mac - не имеют никаких проблем.

На работе мы используем VMs для большинства наших тестовых сред - они работают очень хорошо

12
задан kal 18 August 2009 в 01:03
поделиться

3 ответа

Это потому, что элемент фактически не имеет nodeValue . Вместо этого у него есть текстовый узел в качестве дочернего, который имеет желаемое nodeValue .

Короче говоря, вы захотите getNodeValue () для первого дочернего элемента элемента узел.

Иногда элемент содержит несколько текстовых узлов, так как они имеют максимальный размер, и в этом случае вам понадобится что-то вроде этого со страницы, указанной ранее:

public static String getNodeValue(Node node) {
    StringBuffer buf = new StringBuffer();
    NodeList children = node.getChildNodes();
    for (int i = 0; i < children.getLength(); i++) {
        Node textChild = children.item(i);
        if (textChild.getNodeType() != Node.TEXT_NODE) {
            System.err.println("Mixed content! Skipping child element " + textChild.getNodeName());
            continue;
        }
        buf.append(textChild.getNodeValue());
    }
    return buf.toString();
}
11
ответ дан 2 December 2019 в 06:09
поделиться

Попробуйте извлечь его из элемента, а не из узла:

try {
    String data = "<a><b c='d' e='f'>0.15</b></a>";
    DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
            .newInstance();
    DocumentBuilder documentBuilder = documentBuilderFactory
            .newDocumentBuilder();
    InputSource is = new InputSource();
    is.setCharacterStream(new StringReader(data));
    Document document = documentBuilder.parse(is);

    NodeList nl = document.getElementsByTagName("b");
    Element el = (Element) nl.item(0);
    Text elText = (Text) el.getFirstChild();
    String theValue = elText.getNodeValue();
    System.out.println(theValue);
} catch (Exception e) {
    System.out.println("Exception " + e);
}
7
ответ дан 2 December 2019 в 06:09
поделиться
System.out.println(n.getFirstChild().getNodeValue());
3
ответ дан 2 December 2019 в 06:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: