【问题标题】:Parse XML character for specific attribute value using Stax Parser使用 Stax Parser 解析特定属性值的 XML 字符
【发布时间】:2017-04-15 01:20:38
【问题描述】:

我想在其中获取与属性 name="Fire" 对应的字符的 XML 文件,即 Tree:

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

使用 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.

StAX 是否提供了一种简单的方法来获取属性值与特定字符匹配的字符?

【问题讨论】:

    标签: java xml stax


    【解决方案1】:

    欢迎来到 SO。 您可以通过以下方式获取值:

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

    【讨论】:

      猜你喜欢
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 2016-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多