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

标签 java xml stax

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

<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 是否提供了一种简单的方法来获取属性值与特定字符匹配的字符?

最佳答案

欢迎来到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();
        }
    }

关于java - 使用 Stax Parser 解析特定属性值的 XML 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43421186/

相关文章:

java - Sublime Text 2 在同一文件中对 XML 和 Java 进行语法高亮显示?

java - 如何在 JAVA 中使用 STAX 解析器读取标签内的值

java - 从 Cracking the Coding Interview 中删除列表中的重复项

java - 如何安装 TestFX?

java - Amazon WebServices 中 Tomcat 上 J2EE webapp 的设计注意事项

java - 根据 ArrayList<HashMap<String, String>> 中的值更改 TextView 的颜色

java - Spring LDA : Problem with contextSource Bean

iphone - 如何从 iPhone 应用程序异步接收数据到 Rails 应用程序?

java - 使用 Smooks 或其他工具按元素拆分 XML 文件

java - 将 Java w3c 文档转换为 XMLStreamReader