Java 使用JDOM解析XML文件时出错

Java 使用JDOM解析XML文件时出错,java,xml,dom,jdom,Java,Xml,Dom,Jdom,我有这个XML文档: <?xml version="1.0" encoding="utf-8"?> <RootElement> <Achild> ..... </Achild> </RootElement> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE RootElement [ <!ELEMENT RootElement (A

我有这个XML文档:

<?xml version="1.0" encoding="utf-8"?>
<RootElement>
   <Achild>
      .....
   </Achild>
</RootElement>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE RootElement [
    <!ELEMENT RootElement (Achild)+>
    <!ELEMENT Achild (#PCDATA)>
]>
<RootElement>
   <Achild>some text</Achild>
</RootElement>

但是它给了我一个错误(
childElement
为null)。

听起来像。getFirstChild()将返回一个文本节点,其中包含“”和“”之间的空格,在这种情况下,您需要前进到下一个同级节点才能到达您期望的位置。

听起来像。getFirstChild()正在返回一个文本节点,其中包含“”和“”之间的空白,在这种情况下,您需要前进到下一个同级节点才能到达您期望的位置。

我认为您得到的是
\text
节点(介于
方法之间:

factory.setIgnoringElementContentWhitespace(true);
但是,这仅在验证模式下有效,因此您需要在XML文档中提供DTD:

<?xml version="1.0" encoding="utf-8"?>
<RootElement>
   <Achild>
      .....
   </Achild>
</RootElement>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE RootElement [
    <!ELEMENT RootElement (Achild)+>
    <!ELEMENT Achild (#PCDATA)>
]>
<RootElement>
   <Achild>some text</Achild>
</RootElement>
需要原始代码的结果:

Achild

我认为您得到的是
#text
节点(介于
方法之间:

factory.setIgnoringElementContentWhitespace(true);
但是,这仅在验证模式下有效,因此您需要在XML文档中提供DTD:

<?xml version="1.0" encoding="utf-8"?>
<RootElement>
   <Achild>
      .....
   </Achild>
</RootElement>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE RootElement [
    <!ELEMENT RootElement (Achild)+>
    <!ELEMENT Achild (#PCDATA)>
]>
<RootElement>
   <Achild>some text</Achild>
</RootElement>
需要原始代码的结果:

Achild

什么是
null
,childElement本身,它是节点名还是其他什么?你是指一个名为“AChild”的标记,还是指一般的子节点?我是指一个名为“AChild”的子节点给出类似于[#text….]的内容
null
,childElement本身,它是节点名还是其他什么?你是指一个名为“AChild”的标记吗或者你是指一般的子节点?我是指名为“Achild”的子节点给出类似[#text….]@Saurabh:不客气。请注意,JDOM API()与标准Java DOM API(包括在JDK中)是不同的。我有一个类似于parentNode.getChildNodes()的问题;也将为我获取ACHild的子childnodes,或者仅获取RootElement的子childs。因为我不想要ACHild的子childs,如果他迭代,那么将以性能为代价……)@Saurabh:不客气。请注意,JDOM API()与标准Java DOM API(包括在JDK中)是不同的。我有一个类似于执行parentNode的问题。getChildNodes();也将为我获取ACHild的子childnodes,或者仅获取RootElement的子childs。因为我不想要ACHild的子childs,如果他重复执行,则会使我在性能方面付出代价……)