mirror of
https://github.com/revanced/ARSCLib.git
synced 2025-04-29 22:04:25 +02:00
fix styled string parser
This commit is contained in:
parent
f49799a02d
commit
f0747a6b4f
@ -47,7 +47,7 @@ public class XMLDecodeHelper {
|
||||
public static void writeParsedSpannable(EntryWriter<?> writer, XMLElement spannableParent) throws IOException {
|
||||
for(XMLNode xmlNode : spannableParent.getChildNodes()){
|
||||
if(xmlNode instanceof XMLText){
|
||||
String text = ((XMLText)xmlNode).getText(false);
|
||||
String text = ((XMLText)xmlNode).getText(true);
|
||||
writer.enableIndent(false);
|
||||
writer.text(ValueDecoder.escapeSpecialCharacter(text));
|
||||
}else if(xmlNode instanceof XMLElement){
|
||||
@ -59,13 +59,12 @@ public class XMLDecodeHelper {
|
||||
writer.enableIndent(false);
|
||||
writer.startTag(element.getTagName());
|
||||
for(XMLAttribute xmlAttribute : element.listAttributes()){
|
||||
writer.attribute(xmlAttribute.getName(),
|
||||
ValueDecoder.escapeSpecialCharacter(xmlAttribute.getValue()));
|
||||
writer.attribute(xmlAttribute.getName(), xmlAttribute.getValue());
|
||||
}
|
||||
for(XMLNode xmlNode : element.getChildNodes()){
|
||||
if(xmlNode instanceof XMLText){
|
||||
String text = ((XMLText)xmlNode).getText(false);
|
||||
writer.text(ValueDecoder.escapeSpecialCharacter(text));
|
||||
String text = ((XMLText)xmlNode).getText(true);
|
||||
writer.text(text);
|
||||
}else if(xmlNode instanceof XMLElement){
|
||||
writeElement(writer, (XMLElement) xmlNode);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2022 github.com/REAndroid
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -45,7 +45,7 @@ public class XMLSpanParser {
|
||||
StringReader reader=new StringReader(text);
|
||||
this.mParser.setInput(reader);
|
||||
int type;
|
||||
while ((type=mParser.nextToken()) !=XmlPullParser.END_DOCUMENT){
|
||||
while ((type=mParser.next()) !=XmlPullParser.END_DOCUMENT){
|
||||
event(type);
|
||||
}
|
||||
}
|
||||
@ -58,6 +58,10 @@ public class XMLSpanParser {
|
||||
onEndTag();
|
||||
}else if (type == XmlPullParser.TEXT){
|
||||
onText();
|
||||
}else if (type == XmlPullParser.ENTITY_REF){
|
||||
onEntityRef();
|
||||
}else if (type == XmlPullParser.IGNORABLE_WHITESPACE){
|
||||
onText();
|
||||
}
|
||||
}
|
||||
|
||||
@ -95,6 +99,22 @@ public class XMLSpanParser {
|
||||
mCurrentElement.addText(new XMLText(text));
|
||||
}
|
||||
}
|
||||
private void onEntityRef() {
|
||||
String text = getEntity(mParser.getName());
|
||||
mCurrentElement.addText(new XMLText(text));
|
||||
}
|
||||
private String getEntity(String name){
|
||||
if("amp".equals(name)){
|
||||
return "&";
|
||||
}
|
||||
if("lt".equals(name)){
|
||||
return "<";
|
||||
}
|
||||
if("gt".equals(name)){
|
||||
return ">";
|
||||
}
|
||||
return name;
|
||||
}
|
||||
private void onStartDocument() {
|
||||
this.mCurrentElement=null;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user