相关疑难解决方法(0)

JAVA SAX解析器拆分调用字符()

我正在做一个解析XML中的一些数据的项目.

例如,XML是

<abc>abcdefghijklmno</abc>
Run Code Online (Sandbox Code Playgroud)

我需要解析"abcdefghijkmnlp".

但是当我测试我的解析时,我发现了一个大问题:

public class parser{
    private boolean hasABC = false;


        //Constructor HERE
        ......................
        ......................

     @Override
     public void startDocument () throws SAXException{  
     }

     @Override
     public void endDocument () throws SAXException{  
     }

     @Override
     public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException{  
          if ("abc".equalsIgnoreCase(localName)) {
              this.hasABC = true;
          }
      }
      @Override
      public void endElement(String namespaceURI, String localName, String qName) throws SAXException{
            if ("abc".equalsIgnoreCase(localName)) {
                 this.hasABC = false;
            }
       }
       @Override
       public void characters(char ch[], int start, …
Run Code Online (Sandbox Code Playgroud)

java xml

21
推荐指数
3
解决办法
2万
查看次数

在StAX XMLStreamConstants.CHARACTERS事件中获取XML节点文本时出现问题

在使用StAX和XMLStreamReader读取XML文件时,我遇到了一个奇怪的问题.不确定它是错误还是我做错了什么.还在学习StAX.

所以问题是,

  1. XMLStreamConstants.CHARACTERS事件中,当我收集节点文本作为XMLStreamReader.getText()方法.
  2. 如果在节点文本中存在&,<,>甚至隐藏的内容,则仅返回文本字符串的第一部分.例如ABC & XYZ只返回ABC

简化的Java源码:

    // Start StaX reader
    XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
    try {
        XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(inStream);
        int event = xmlStreamReader.getEventType();
        while (true) {
            switch (event) {
                case XMLStreamConstants.START_ELEMENT:
                    switch (xmlStreamReader.getLocalName()) {
                        case "group":
                        // Do something
                            break;
                        case "source":
                            isSource = true;
                            break;
                        case "target":
                            isTarget = true;
                            break;
                        default:
                            isSource = false;
                            isTrans = false;
                            break;
                    }
                    break;
                case XMLStreamConstants.CHARACTERS:
                    if (srcData != null) {
                        String srcTrns …
Run Code Online (Sandbox Code Playgroud)

java xml stax

4
推荐指数
1
解决办法
2116
查看次数

标签 统计

java ×2

xml ×2

stax ×1