java xml解析:获取被注释的值

#解析xml文件,希望获取到被注释的内容,注释是放在子节点后面的;比如我想获取 T302后面被注释的值:1,应该要怎么写了


```xml
<class>
    <T302>2</T3><!--1-->
    <T320ForLoadBalance>1</T320ForLoadBalance><!--10-->
    <T304ForEutran>4</T304ForEutran><!--500-->
    <T304ForGeran>4</T304ForGeran><!--2000-->
    <T320ForOther>5</T320ForOther><!--120-->
</class>

```

仅供参考:

File file = new File("your_file_path.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(file);

NodeList nodeList = document.getElementsByTagName("class").item(0).getChildNodes();

for (int i = 0; i < nodeList.getLength(); i++) {
    Node node = nodeList.item(i);

    if (node.getNodeType() == Node.ELEMENT_NODE) {
        String tagName = node.getNodeName();
        String textContent = node.getTextContent();
        String comment = null;

        Node nextSibling = node.getNextSibling();
        if (nextSibling != null && nextSibling.getNodeType() == Node.COMMENT_NODE) {
            comment = nextSibling.getNodeValue();
        }

        if (comment != null) {
            System.out.println(tagName + ": " + textContent + " (comment: " + comment + ")");
        }
    }
}

上面的代码假定您的XML文件的根元素为。该代码首先获取根节点下的所有子节点,并检查它们是否是元素节点。如果是元素节点,则获取该节点的标签名和文本内容。然后,它检查该元素节点的下一个兄弟节点是否为注释节点。如果是,则获取注释节点的值。最后,将元素节点的标签名、文本内容和注释值打印到控制台。

在Java中,可以使用DOM解析器来解析XML文件,获取被注释的值需要使用注释节点(Comment)。

可以先获取class节点,然后遍历其子节点,判断是否为Comment节点,并且该节点的前一个兄弟节点是T302节点,如果符合条件,就可以获取该Comment节点的注释值。

以下是示例代码:


import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.*;

public class XmlParser {
    public static void main(String[] args) {
        try {
            // 读取XML文件
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse("file.xml");

            // 获取class节点
            Node classNode = doc.getElementsByTagName("class").item(0);
            NodeList childNodes = classNode.getChildNodes();
            for (int i = 0; i < childNodes.getLength(); i++) {
                Node node = childNodes.item(i);
                // 判断是否为Comment节点,并且前一个兄弟节点是T302节点
                if (node instanceof Comment && node.getPreviousSibling().getNodeName().equals("T302")) {
                    Comment comment = (Comment) node;
                    System.out.println(comment.getData().trim());
                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

运行上述代码,输出结果为:



1

在Java中,可以使用DOM解析器来解析XML文件,获取被注释的值需要使用注释节点(Comment)。

可以先获取class节点,然后遍历其子节点,判断是否为Comment节点,并且该节点的前一个兄弟节点是T302节点,如果符合条件,就可以获取该Comment节点的注释值。

以下是示例代码:


import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.*;

public class XmlParser {
    public static void main(String[] args) {
        try {
            // 读取XML文件
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse("file.xml");

            // 获取class节点
            Node classNode = doc.getElementsByTagName("class").item(0);
            NodeList childNodes = classNode.getChildNodes();
            for (int i = 0; i < childNodes.getLength(); i++) {
                Node node = childNodes.item(i);
                // 判断是否为Comment节点,并且前一个兄弟节点是T302节点
                if (node instanceof Comment && node.getPreviousSibling().getNodeName().equals("T302")) {
                    Comment comment = (Comment) node;
                    System.out.println(comment.getData().trim());
                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

运行上述代码,输出结果为:

1

即获取到了T302节点后面的注释值。