如何在使用 DOM 时访问特定标签?

How could I reach a specific tag while using DOM?

提问人: 提问时间:10/8/2022 更新时间:1/4/2023 访问量:53

问:

请告诉我如何到达“autovehicul”,而语言是英语,它的兄弟姐妹是汽车。谢谢。 如果选择了语言英语并选择了汽车,在网络服务中,如果存在罗马尼亚语,我的答案必须是 autovehicul。

你怎么能解析那个xml来得到这样的答案。我在定位特定节点时遇到了问题。条件 - 节点列表 - 迭代 - 条件 - 节点 - get 标签。然后,我必须建立 autovehicul 内容的节点,并获得所需的结果。

<Word>
    <equivalent>
        <language>english</language>
        <word-translate>car</word-translate>
    </equivalent>

    <equivalent>
        <language>romanian</language>
        <word-translate>autovehicul</word-translate>
    </equivalent>
</Word>
Java XML 解析 intellij-idea dom

评论


答:

0赞 JuniorAnonymDeveloper 10/8/2022 #1

我不太明白这个问题,但我认为您可能会寻找这样的东西:链接

评论

0赞 10/9/2022
如果选择了语言英语并选择了汽车,在网络服务中,我的答案必须是 autovehicul。
0赞 Community 10/14/2022
您的答案可以通过其他支持信息进行改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。
0赞 Andreea Purta 10/13/2022 #2

您可以尝试如下操作:

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var parser, xmlDoc;
var text = "<Word> <equivalent><language>english</language><word-translate>car</word-translate></equivalent>" +
"<equivalent><language>romanian</language><word-translate>autovehicul</word-translate></equivalent></Word>";

parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");

document.getElementById("demo").innerHTML =
xmlDoc.getElementsByTagName("word-translate")[1].childNodes[0].nodeValue;
</script>

</body>
</html>

或者您可以尝试 XPath 以更轻松地访问。

评论

0赞 10/14/2022
我的问题是如何到达一个节点。我有一个简单的目标标签。你使用 NodeList,遍历它,放置一个条件(如果存在语言),然后 Node 类来获取目标标签。XPath 永远不会使用标签。如果我能修改 .xml,生活会更轻松。他们说,只是标签。它必须很简单。<单词> <罗马尼亚语>autovehicul</罗马尼亚语> <英语>汽车</英语> <西班牙语>coche</西班牙语> <意大利语>auto</意大利语> <瑞典语>bil</瑞典语> <希腊语>αυτοκίνητο</希腊语> </word> 从意大利语中获取我的汽车。这就是我所需要的。
0赞 user19554908 1/4/2023 #3

显然,如果这个问题没有解决,我就不能再添加更多问题了。 DOM不是一个好主意。它有效,但你需要硬编码,女巫对我没有多大帮助。相反,我放弃了 DOM 并使用了另一种方式。不幸的是,我不能向你展示代码,因为它是学校作业的一部分,我们有一个遵守的协议。 我只能说你可以分析你的文档,并使用SAX或StAX解析它。 那些试图帮助我的人喜欢女士。Purta,给了我一个使用ID的答案,谢谢你的时间。我试着选择你的答案作为一个好的答案,但我必须在 15 级......大师药水等级...在我自己的职位上有发言权。 :D 我不能再问更多的问题,在这些问题以某种方式得到解决之前,我不会问更多问题。问题出在学校的规定上。他们是卑鄙的人。

NodeList wordNode = document.getElementsByTagName(word);
    for (int i = 0; i < wordNode.getLength(); i++) {
        Node node = wordNode.item(i);
        if (node.getNodeType()== Node.ELEMENT_NODE){
            Element eElement = (Element) node;
            String result ="romanian";
            switch (result) {
                case "english" -> result = eElement.getElementsByTagName("english").item(0).getTextContent();
                case "romanian" -> result = eElement.getElementsByTagName("romanian").item(0).getTextContent();
                case "spanish" -> result = eElement.getElementsByTagName("spanish").item(0).getTextContent();
                case "italian" -> result = eElement.getElementsByTagName("italian").item(0).getTextContent();
                case "swedish" -> result = eElement.getElementsByTagName("swedish").item(0).getTextContent();
                case "greek" -> result = eElement.getElementsByTagName("greek").item(0).getTextContent();
            }
            return result;
        }
        if (node.getNodeType() == Node.ELEMENT_NODE){
            Element sElement = (Element) node;
            String source = "english";
            switch (source){
                case "english" -> source = sElement.getParentNode().getNodeName();
                case "romanian" -> source = sElement.getParentNode().getNodeName();
                case "spanish" -> source = sElement.getParentNode().getNodeName();
                case "italian" -> source = sElement.getParentNode().getNodeName();
                case "swedish" -> source = sElement.getParentNode().getNodeName();
                case "greek" -> source = sElement.getParentNode().getNodeName();
            }
            return source;
        }

} 返回 null;

ID 不是解决方案,但它有效。XPath 也有效。 仅此而已!