提交 f91c5d36 编写于 作者: S Skylot

res: skip padding on file end (#225)

上级 1f3aebf5
...@@ -48,6 +48,7 @@ public class BinaryXMLParser extends CommonBinaryParser { ...@@ -48,6 +48,7 @@ public class BinaryXMLParser extends CommonBinaryParser {
private ValuesParser valuesParser; private ValuesParser valuesParser;
private boolean isLastEnd = true; private boolean isLastEnd = true;
private boolean isOneLine = true; private boolean isOneLine = true;
private int namespaceDepth = 0;
private int[] resourceIds; private int[] resourceIds;
public BinaryXMLParser(RootNode root) { public BinaryXMLParser(RootNode root) {
...@@ -136,6 +137,10 @@ public class BinaryXMLParser extends CommonBinaryParser { ...@@ -136,6 +137,10 @@ public class BinaryXMLParser extends CommonBinaryParser {
break; break;
default: default:
if (namespaceDepth == 0) {
// skip padding on file end
return;
}
die("Type: 0x" + Integer.toHexString(type) + " not yet implemented"); die("Type: 0x" + Integer.toHexString(type) + " not yet implemented");
break; break;
} }
...@@ -166,6 +171,7 @@ public class BinaryXMLParser extends CommonBinaryParser { ...@@ -166,6 +171,7 @@ public class BinaryXMLParser extends CommonBinaryParser {
int beginPrefix = is.readInt32(); int beginPrefix = is.readInt32();
int beginURI = is.readInt32(); int beginURI = is.readInt32();
nsMap.computeIfAbsent(getString(beginURI), k -> getString(beginPrefix)); nsMap.computeIfAbsent(getString(beginURI), k -> getString(beginPrefix));
namespaceDepth++;
} }
private void parseNameSpaceEnd() throws IOException { private void parseNameSpaceEnd() throws IOException {
...@@ -179,6 +185,7 @@ public class BinaryXMLParser extends CommonBinaryParser { ...@@ -179,6 +185,7 @@ public class BinaryXMLParser extends CommonBinaryParser {
int comment = is.readInt32(); int comment = is.readInt32();
int endPrefix = is.readInt32(); int endPrefix = is.readInt32();
int endURI = is.readInt32(); int endURI = is.readInt32();
namespaceDepth--;
nsMap.computeIfAbsent(getString(endURI), k -> getString(endPrefix)); nsMap.computeIfAbsent(getString(endURI), k -> getString(endPrefix));
} }
...@@ -381,8 +388,9 @@ public class BinaryXMLParser extends CommonBinaryParser { ...@@ -381,8 +388,9 @@ public class BinaryXMLParser extends CommonBinaryParser {
int endLineNumber = is.readInt32(); int endLineNumber = is.readInt32();
int comment = is.readInt32(); int comment = is.readInt32();
int elementNS = is.readInt32(); int elementNS = is.readInt32();
int elementName = is.readInt32(); int elementNameId = is.readInt32();
if (currentTag.equals(getString(elementName)) && isOneLine && !isLastEnd) { String elemName = getString(elementNameId);
if (currentTag.equals(elemName) && isOneLine && !isLastEnd) {
writer.add("/>"); writer.add("/>");
} else { } else {
writer.startLine("</"); writer.startLine("</");
...@@ -390,7 +398,7 @@ public class BinaryXMLParser extends CommonBinaryParser { ...@@ -390,7 +398,7 @@ public class BinaryXMLParser extends CommonBinaryParser {
// if (elementNS != -1) { // if (elementNS != -1) {
// writer.add(getString(elementNS)).add(':'); // writer.add(getString(elementNS)).add(':');
// } // }
writer.add(getString(elementName)).add(">"); writer.add(elemName).add(">");
} }
isLastEnd = true; isLastEnd = true;
if (writer.getIndent() != 0) { if (writer.getIndent() != 0) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册