mirror of
https://github.com/revanced/ARSCLib.git
synced 2025-04-30 06:14: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 {
|
public static void writeParsedSpannable(EntryWriter<?> writer, XMLElement spannableParent) throws IOException {
|
||||||
for(XMLNode xmlNode : spannableParent.getChildNodes()){
|
for(XMLNode xmlNode : spannableParent.getChildNodes()){
|
||||||
if(xmlNode instanceof XMLText){
|
if(xmlNode instanceof XMLText){
|
||||||
String text = ((XMLText)xmlNode).getText(false);
|
String text = ((XMLText)xmlNode).getText(true);
|
||||||
writer.enableIndent(false);
|
writer.enableIndent(false);
|
||||||
writer.text(ValueDecoder.escapeSpecialCharacter(text));
|
writer.text(ValueDecoder.escapeSpecialCharacter(text));
|
||||||
}else if(xmlNode instanceof XMLElement){
|
}else if(xmlNode instanceof XMLElement){
|
||||||
@ -59,13 +59,12 @@ public class XMLDecodeHelper {
|
|||||||
writer.enableIndent(false);
|
writer.enableIndent(false);
|
||||||
writer.startTag(element.getTagName());
|
writer.startTag(element.getTagName());
|
||||||
for(XMLAttribute xmlAttribute : element.listAttributes()){
|
for(XMLAttribute xmlAttribute : element.listAttributes()){
|
||||||
writer.attribute(xmlAttribute.getName(),
|
writer.attribute(xmlAttribute.getName(), xmlAttribute.getValue());
|
||||||
ValueDecoder.escapeSpecialCharacter(xmlAttribute.getValue()));
|
|
||||||
}
|
}
|
||||||
for(XMLNode xmlNode : element.getChildNodes()){
|
for(XMLNode xmlNode : element.getChildNodes()){
|
||||||
if(xmlNode instanceof XMLText){
|
if(xmlNode instanceof XMLText){
|
||||||
String text = ((XMLText)xmlNode).getText(false);
|
String text = ((XMLText)xmlNode).getText(true);
|
||||||
writer.text(ValueDecoder.escapeSpecialCharacter(text));
|
writer.text(text);
|
||||||
}else if(xmlNode instanceof XMLElement){
|
}else if(xmlNode instanceof XMLElement){
|
||||||
writeElement(writer, (XMLElement) xmlNode);
|
writeElement(writer, (XMLElement) xmlNode);
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ public class XMLSpanParser {
|
|||||||
StringReader reader=new StringReader(text);
|
StringReader reader=new StringReader(text);
|
||||||
this.mParser.setInput(reader);
|
this.mParser.setInput(reader);
|
||||||
int type;
|
int type;
|
||||||
while ((type=mParser.nextToken()) !=XmlPullParser.END_DOCUMENT){
|
while ((type=mParser.next()) !=XmlPullParser.END_DOCUMENT){
|
||||||
event(type);
|
event(type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -58,6 +58,10 @@ public class XMLSpanParser {
|
|||||||
onEndTag();
|
onEndTag();
|
||||||
}else if (type == XmlPullParser.TEXT){
|
}else if (type == XmlPullParser.TEXT){
|
||||||
onText();
|
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));
|
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() {
|
private void onStartDocument() {
|
||||||
this.mCurrentElement=null;
|
this.mCurrentElement=null;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user