From 582c2e3b79c27b7fefcc771de244bbf4dae9293d Mon Sep 17 00:00:00 2001 From: AraragiHitagi <542941556@qq.com> Date: Tue, 29 Nov 2022 17:28:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B7=BB=E5=8A=A0=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E6=97=B6=EF=BC=8C=E5=8F=AA=E5=8A=A0=E5=88=B0=E7=AC=AC?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E5=8C=B9=E9=85=8D=E7=9A=84=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E4=B8=8A=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/cn/wjdiankong/main/XmlEditor.java | 378 ++++++++++++++------------ 1 file changed, 201 insertions(+), 177 deletions(-) diff --git a/src/cn/wjdiankong/main/XmlEditor.java b/src/cn/wjdiankong/main/XmlEditor.java index 1c31c96..34e527f 100644 --- a/src/cn/wjdiankong/main/XmlEditor.java +++ b/src/cn/wjdiankong/main/XmlEditor.java @@ -28,62 +28,66 @@ public class XmlEditor { public static String prefixStr = "http://schemas.android.com/apk/res/android"; /** - * 删除标签内容 + * 鍒犻櫎鏍囩鍐呭 * @param tagName * @param name */ public static void removeTag(String tagName, String name){ - ParserChunkUtils.parserXml(); - for(TagChunk tag : ParserChunkUtils.xmlStruct.tagChunkList){ - int tagNameIndex = Utils.byte2int(tag.startTagChunk.name); - String tagNameTmp = ParserChunkUtils.xmlStruct.stringChunk.stringContentList.get(tagNameIndex); - if(tagName.equals(tagNameTmp)){ - for(AttributeData attrData : tag.startTagChunk.attrList){ - String attrName = ParserChunkUtils.xmlStruct.stringChunk.stringContentList.get(attrData.name); - if("name".equals(attrName)){ - String value = ParserChunkUtils.xmlStruct.stringChunk.stringContentList.get(attrData.valueString); - if(name.equals(value)){ - //找到指定的tag开始删除 - int size = Utils.byte2int(tag.endTagChunk.size); - int delStart = tag.startTagChunk.offset; - int delSize = (tag.endTagChunk.offset - tag.startTagChunk.offset) + size; - ParserChunkUtils.xmlStruct.byteSrc = Utils.removeByte(ParserChunkUtils.xmlStruct.byteSrc, delStart, delSize); - - modifyFileSize(); - return; + try{ + ParserChunkUtils.parserXml(); + for(TagChunk tag : ParserChunkUtils.xmlStruct.tagChunkList){ + int tagNameIndex = Utils.byte2int(tag.startTagChunk.name); + String tagNameTmp = ParserChunkUtils.xmlStruct.stringChunk.stringContentList.get(tagNameIndex); + if(tagName.equals(tagNameTmp)){ + for(AttributeData attrData : tag.startTagChunk.attrList){ + String attrName = ParserChunkUtils.xmlStruct.stringChunk.stringContentList.get(attrData.name); + if("name".equals(attrName)){ + String value = ParserChunkUtils.xmlStruct.stringChunk.stringContentList.get(attrData.valueString); + if(name.equals(value)){ + //鎵惧埌鎸囧畾鐨則ag寮濮嬪垹闄 + int size = Utils.byte2int(tag.endTagChunk.size); + int delStart = tag.startTagChunk.offset; + int delSize = (tag.endTagChunk.offset - tag.startTagChunk.offset) + size; + ParserChunkUtils.xmlStruct.byteSrc = Utils.removeByte(ParserChunkUtils.xmlStruct.byteSrc, delStart, delSize); + + modifyFileSize(); + return; + } } } } } + }catch (IOException e){ + System.out.println("parse xml err:"+e.toString()); } } /** - * 添加标签内容 + * 娣诲姞鏍囩鍐呭 */ public static void addTag(String insertXml){ - ParserChunkUtils.parserXml(); try { - XmlPullParserFactory pullParserFactory = XmlPullParserFactory.newInstance(); + ParserChunkUtils.parserXml(); + XmlPullParserFactory pullParserFactory = XmlPullParserFactory.newInstance(); XmlPullParser pullParser = pullParserFactory.newPullParser(); pullParser.setInput(new FileInputStream(insertXml), "UTF-8"); int event = pullParser.getEventType(); - // 若为解析到末尾 - while (event != XmlPullParser.END_DOCUMENT){ // 文档结束 - // 节点名称 + // 鑻ヤ负瑙f瀽鍒版湯灏 + while (event != XmlPullParser.END_DOCUMENT){ // 鏂囨。缁撴潫 + // 鑺傜偣鍚嶇О switch (event) { - case XmlPullParser.START_DOCUMENT: // 文档开始 + case XmlPullParser.START_DOCUMENT: // 鏂囨。寮濮 break; - case XmlPullParser.START_TAG: // 标签开始 + case XmlPullParser.START_TAG: // 鏍囩寮濮 String tagName = pullParser.getName(); int name = getStrIndex(tagName); int attCount = pullParser.getAttributeCount(); byte[] attribute = new byte[20*attCount]; for(int i=0;i