Changeset 8726


Ignore:
Timestamp:
2004-12-02T16:33:50+13:00 (19 years ago)
Author:
kjdon
Message:

finished the unXmlSafe method, and now unescape attribute values when returning them. need to check that I do this everywhere

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/util/GSXML.java

    r8671 r8726  
    234234        val=getNodeText(e);
    235235
     236    } else {
     237        // unescape the xml stuff
     238        val = unXmlSafe(val);
    236239    }
    237240    return val;
     
    590593
    591594   
    592 //      // replaces < > " ' & in the original with their entities
    593 //      public static String unXmlSafe(String original) {
    594 
    595 //      StringBuffer filtered = new StringBuffer(original.length());
    596 //      char c;
    597 //      for (int i=0; i<original.length(); i++) {
    598 //          c = original.charAt(i);
    599 //          if (c == '&') {
    600 //          int pos = original.indexOf(";"), i);
    601 //          String entity = original.substring(i+1, pos);
    602 //          if (entity.equals("gt")) {
    603 //          filtered.append(">");
    604 //          } else if (entity.equals("lt")) {
    605 //          filtered.append("<");
    606 //          } else if (entity.equals("apos")) {
    607 //          filtered.append(
    608 //          while (c != ';') {
    609            
    610 //          // process the entity
    611 //          } else {
    612 //          filtered.append(c);
    613 //          }
    614 //      }
    615 //      return filtered.toString();
    616 //      }
     595    // replaces < > " ' & entities with their originals
     596    public static String unXmlSafe(String original) {
     597   
     598    StringBuffer filtered = new StringBuffer(original.length());
     599    char c;
     600    for (int i=0; i<original.length(); i++) {
     601        c = original.charAt(i);
     602        if (c == '&') {
     603        int pos = original.indexOf(";", i);
     604        String entity = original.substring(i+1, pos);
     605        if (entity.equals("gt")) {
     606            filtered.append(">");
     607        } else if (entity.equals("lt")) {
     608            filtered.append("<");
     609        } else if (entity.equals("apos")) {
     610            filtered.append("'");
     611        } else if (entity.equals("amp")) {
     612            filtered.append("&");
     613        } else if (entity.equals("quot")) {
     614            filtered.append("\"");
     615        } else {
     616            filtered.append("&"+entity+";");
     617        }
     618        i = pos;
     619        }
     620        else {
     621        filtered.append(c);
     622        }
     623    }
     624    return filtered.toString();
     625     }
    617626}
Note: See TracChangeset for help on using the changeset viewer.