Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XML节点和子节点_Java_Xml - Fatal编程技术网

Java XML节点和子节点

Java XML节点和子节点,java,xml,Java,Xml,语句A和语句B都打印相同的输出 这意味着什么,每个节点本身都是一个子节点 输入的XML是 header = new LinkedHashMap<String,Object>(); Element headerElement = (Element)doc.getElementsByTagName( "Header").item(0); NodeList elementList = headerElement.getElementsByTagName( "*" ); for( int i

语句A和语句B都打印相同的输出

这意味着什么,每个节点本身都是一个子节点

输入的XML是

header = new LinkedHashMap<String,Object>();
Element headerElement = (Element)doc.getElementsByTagName( "Header").item(0);
NodeList elementList = headerElement.getElementsByTagName( "*" );
for( int index =0; index < elementList.getLength(); index++ ){
    Node element = elementList.item(index);
    System.out.println( element.getChildNodes().item(0).getTextContent() ); // Statement A          
    System.out.println( element.getTextContent()); // Statement B
从中,对于元素\节点的节点类型:

连接每个子节点的textContent属性值,不包括注释节点和处理节点。如果节点没有子节点,则为空字符串

而对于文本节点,方法的返回值仅为nodeValue,即节点的文本

因此,是-对具有单个子节点(文本节点)的元素调用此函数将得到与直接在该文本节点上调用相同的结果。但在其他情况下,你会得到不同的结果。例如,如果您有这样一个元素:

<Header>
    <tag1>1</tag1>
    <tag2>2</tag2>
    <tag3>3</tag3>
    <tag4>4</tag4>
</Header>
将有两个子文本节点和一个子元素节点,结果将是12或12;我不确定在这种连接中间距是如何工作的,但您可以检查一下

这不是一个包含自身的节点的问题——这只是一个定义此方法作用的问题。

来自,对于元素节点的节点类型:

连接每个子节点的textContent属性值,不包括注释节点和处理节点。如果节点没有子节点,则为空字符串

而对于文本节点,方法的返回值仅为nodeValue,即节点的文本

因此,是-对具有单个子节点(文本节点)的元素调用此函数将得到与直接在该文本节点上调用相同的结果。但在其他情况下,你会得到不同的结果。例如,如果您有这样一个元素:

<Header>
    <tag1>1</tag1>
    <tag2>2</tag2>
    <tag3>3</tag3>
    <tag4>4</tag4>
</Header>
将有两个子文本节点和一个子元素节点,结果将是12或12;我不确定在这种连接中间距是如何工作的,但您可以检查一下

这不是一个包含自身的节点的问题,而是这个方法的定义问题。

getTextContent返回这个节点及其子节点的文本内容

在tag1执行的语句A返回1下面的文本节点

在同一位置执行的语句B获取tag1 a列表的子节点和一个文本节点,选择第一个唯一的文本节点并显示其文本值

在本例中,它们是相同的。

getTextContent返回此节点及其子节点的文本内容

在tag1执行的语句A返回1下面的文本节点

在同一位置执行的语句B获取tag1 a列表的子节点和一个文本节点,选择第一个唯一的文本节点并显示其文本值


在这种情况下,他们是同一件事。

@madhairseime:我不知道你的意思。我已经确切地解释了为什么您的代码会以这种方式运行:实现遵循文档。@MadhailSilence:我不知道您的意思。我已经确切地解释了为什么您的代码会以这种方式运行:实现遵循文档。Bullseye!那么你能告诉我,如何检查它下面是否没有标签吗。我指的是不介于<>之间的内容检查返回列表中每个节点的节点类型。在Javadoc for org.w3c.dom.Node中查找节点类型列表。@MadhailSilence:这里的大图是什么?你想实现什么?当我遇到这种情况时,我不需要打印子节点1,因为我只有一个文本1而不是标记当你到达标记1时,检查它的所有子节点并按类型分组。如果您只有文本节点和属性节点,即没有元素节点,那么这符合您的要求!那么你能告诉我,如何检查它下面是否没有标签吗。我指的是不介于<>之间的内容检查返回列表中每个节点的节点类型。在Javadoc for org.w3c.dom.Node中查找节点类型列表。@MadhailSilence:这里的大图是什么?你想实现什么?当我遇到这种情况时,我不需要打印子节点1,因为我只有一个文本1而不是标记当你到达标记1时,检查它的所有子节点并按类型分组。如果您只有文本节点和属性节点,即没有元素节点,那么这符合您的需求。