简体   繁体   English

使用Stax Parser解析特定属性值的XML字符

[英]Parse XML character for specific attribute value using Stax Parser

XML File where I want to get Character corresponding to attribute name="Fire" which is Tree: 我希望得到的XML文件对应于属性名称=“Fire”的字符是Tree:

<Troupe name="Ring">Hat</Troupe>
<Troupe name="Fire">Tree</Troupe>
<Troupe name="bank">Next</Troupe>

Using StAX: 使用StAX:

XmlStreamConstant.Start_Element:
   //Parse Troupe found matching attribute name whose value is Fire
XmlStreamConstant.Characters:
   //Fetch the character Tree corresponding to attribute name Fire.

Does StAX provide an easy way to fetch characters where attributes value matches a specific one? StAX是否提供了一种简单的方法来获取属性值与特定值匹配的字符?

Welcome to SO. 欢迎来到SO。 You can get the value by : 您可以通过以下方式获取价值:

public static void main(String[] args) {

        boolean troupe = false;

        try {

            XMLInputFactory factory = XMLInputFactory.newInstance();
            XMLEventReader eventReader =
                    factory.createXMLEventReader(new ileReader("file.xml"));

            while(eventReader.hasNext()){

                XMLEvent event = eventReader.nextEvent();

                if(event.getEventType() == XMLStreamConstants.START_ELEMENT){
                    StartElement startElement = event.asStartElement();

                    if (startElement.getName().getLocalPart().equalsIgnoreCase("Troupe")) {
                        Iterator<Attribute> attributes = startElement.getAttributes();
                        String name = attributes.next().getValue();
                        if(name.equals("Fire")) {
                            troupe = true;
                        }
                    }
                }
                else if(event.getEventType() == XMLStreamConstants.CHARACTERS) {
                    Characters characters = event.asCharacters();
                    if(troupe){
                        System.out.println("Value: "  + characters.getData());
                        troupe = false;
                    }
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (XMLStreamException e) {
            e.printStackTrace();
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM