我認爲你要#text
節點(即<RootElement>
之間<Achild>
)(這是相當常見的錯誤)的第一個孩子,例如:
final Node parentNode = doc.getDocumentElement();
Node childElement = parentNode.getFirstChild();
System.out.println(childElement.getNodeName());
返回:
#text
使用相反:
final Node parentNode = doc.getDocumentElement();
NodeList childElements = parentNode.getChildNodes();
for (int i = 0; i < childElements.getLength(); ++i)
{
Node childElement = childElements.item(i);
if (childElement instanceof Element)
System.out.println(childElement.getNodeName());
}
通緝resulul T:
Achild
編輯:
有使用DocumentBuilderFactory.setIgnoringElementContentWhitespace
方法第二種方式:
factory.setIgnoringElementContentWhitespace(true);
但是這隻有在驗證模式,所以你需要在XML文檔中提供DTD :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE RootElement [
<!ELEMENT RootElement (Achild)+>
<!ELEMENT Achild (#PCDATA)>
]>
<RootElement>
<Achild>some text</Achild>
</RootElement>
and s et factory.setValidating(true)
。完整的示例:
final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(true);
factory.setIgnoringElementContentWhitespace(true);
final DocumentBuilder builder = factory.newDocumentBuilder();
final Document doc = builder.parse("input.xml");
final Node rootNode = doc.getDocumentElement();
final Element childElement = (Element) rootNode.getFirstChild();
System.out.println(childElement.getNodeName());
想與原代碼的結果是:
Achild
* *什麼是'null',是childElement本身,它的節點名稱或其他什麼東西? –
你的意思是一個叫做「AChild」的標籤,還是你的意思是一般的孩子節點? – RMT
我的意思是一個名爲「Achild」的孩子節點 –