Java 用DOM解析XML注释

Java 用DOM解析XML注释,java,xml,parsing,dom,xml-parsing,Java,Xml,Parsing,Dom,Xml Parsing,我需要解析注释掉的XML标记,如 <DataType Name="SecureCode" Size="4" Type="NVARCHAR"> <!-- <Validation> <Regex JavaPattern="^[0-9]*$" JSPattern="^[0-9]*$"/> </Validation> --> <UIType Size="4" UITableSize="4"/

我需要解析注释掉的XML标记,如

<DataType Name="SecureCode" Size="4" Type="NVARCHAR">
    <!-- <Validation>
            <Regex JavaPattern="^[0-9]*$" JSPattern="^[0-9]*$"/>
    </Validation> -->
    <UIType Size="4" UITableSize="4"/>
</DataType>
但这似乎没有改变任何事情。 有没有其他方法来解析这些评论?我必须使用DOM


关于

由于似乎不存在解决问题的“常规方法”,我刚刚删除了注释

BufferedReader br = new BufferedReader(new FileReader(new File(PathChecker.getDataTypesFile())));
BufferedWriter bw = new BufferedWriter(new FileWriter(new File(PathChecker.getDataTypesFileWithoutComments())));

String line = "";

while ((line = br.readLine()) != null) {
    line = line.replace("<!--", "").replace("-->", "") + "\n";
    bw.write(line);
}
BufferedReader br=new BufferedReader(新文件读取器(新文件(PathChecker.getDataTypesFile()));
BufferedWriter bw=新的BufferedWriter(新文件编写器(新文件(PathChecker.getDataTypesFileWithoutComments()));
字符串行=”;
而((line=br.readLine())!=null){
行=行。替换(“,”)+“\n”;
写入(行);
}
方法“setIgnoringComments”在解析期间从DOM树中删除了注释。 使用“setIgnoringComments(false)”可以获得如下注释文本:

    NodeList nl = doc.getDocumentElement().getChildNodes();
    for (int i = 0; i < nl.getLength(); i++) {
        if (nl.item(i).getNodeType() == Element.COMMENT_NODE) {
            Comment comment=(Comment) nl.item(i);
            System.out.println(comment.getData());
        }
    }
NodeList nl=doc.getDocumentElement().getChildNodes();
对于(int i=0;i
可能重复:我也找到了那篇文章。这对我没有任何帮助。据报道,似乎setIgnoringComments()有一个bug,但这些年来一直没有修复:setIgnoringComments()只是为我工作过哦,太酷了。我没试过,但那应该能解决问题。谢谢
    NodeList nl = doc.getDocumentElement().getChildNodes();
    for (int i = 0; i < nl.getLength(); i++) {
        if (nl.item(i).getNodeType() == Element.COMMENT_NODE) {
            Comment comment=(Comment) nl.item(i);
            System.out.println(comment.getData());
        }
    }