【问题标题】:Parsing XML comments with DOM使用 DOM 解析 XML 注释
【发布时间】:2013-11-15 08:24:54
【问题描述】:

我需要解析被注释掉的 XML 标签

<DataType Name="SecureCode" Size="4" Type="NVARCHAR">
    <!-- <Validation>
            <Regex JavaPattern="^[0-9]*$" JSPattern="^[0-9]*$"/>
    </Validation> -->
    <UIType Size="4" UITableSize="4"/>
</DataType>

但我发现的只是setIgnoringComments(boolean)

Document doc = docBuilder.parse(new File(PathChecker.getDataTypesFile()));
docFactory.setIgnoringComments(true); // ture or false, no difference

但它似乎并没有改变任何东西。 有没有其他方法可以解析这个 cmets?我必须使用 DOM。

问候

【问题讨论】:

标签: java xml parsing dom xml-parsing


【解决方案1】:

方法“setIgnoringComments”在解析期间从 DOM 树中删除了 cmets。 使用“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());
        }
    }

【讨论】:

  • 哦,这很酷。没试过,但应该可以解决。谢谢
【解决方案2】:

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

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);
}

【讨论】:

    猜你喜欢
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    相关资源
    最近更新 更多