在java中使用SAX解析XML,不区分大小写。

发布于 2024-11-27 00:37:14 字数 331 浏览 1 评论 0原文

我可以使用 Java 中的 SAXParserFactory 很好地解析 xml,但在某些文件中, 存在一些非小写属性,例如 Linear3D="0.5" 等。

我想以某种方式使

attributes.getValue(attr)

大小写不敏感,以便 attributes.getValue("linear3d") 返回“0.5”。

一种解决方案是首先将文件作为字符串读取,转换为小写,然后解析, 因为在这种类型的 xml 中执行此操作没有任何歧义。 但是,是否可以通过向工厂添加一些标志或类似的方式来更简单地完成此操作?

I can parse xml just fine with SAXParserFactory in Java, BUT in some files,
there are some non-lowercase attributes present, like linear3D="0.5" etc.

I would like to somehow make

attributes.getValue(attr)

case-insensitive, so that attributes.getValue("linear3d") returns "0.5".

One solution would be to read the file as a string first, convert to lowercase, and then parse,
since there is no ambiguity in doing this in this type of xml.
However, can this be done more simply, by adding some flag to the factory or similar?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伴随着你 2024-12-04 00:37:14

下面的方法不是将整个文件转换为小写,而是更好。这会迭代所选标签的所有属性并忽略大小写进行比较。

DefaultHandler 的实现中编写以下方法

private String getValueIgnoreCase(Attributes attributes, String qName){
    for(int i = 0; i < attributes.getLength(); i++){
        String qn = attributes.getQName(i);
        if(qn.equalsIgnoreCase(qName)){
            return attributes.getValue(i);
        }
    }
    return null;
}

Instead of converting the entire file in to lower case the following approach is better. This iterates through all the attributes of the selected tag and comperes it ignoring the case.

Inside the implementaion of DefaultHandler write the following method

private String getValueIgnoreCase(Attributes attributes, String qName){
    for(int i = 0; i < attributes.getLength(); i++){
        String qn = attributes.getQName(i);
        if(qn.equalsIgnoreCase(qName)){
            return attributes.getValue(i);
        }
    }
    return null;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文