Войти

Показать полную графическую версию : [решено] Удалить одну фразу (кодировка файла UTF-8)


njg
03-01-2012, 08:12
Прощу помощи. Нужно найти фразу в исходном файле и удалить её. Файл в UTF-8. Как не пытаюсь, все кодировку нарушаю.
Файл прикрепил. Нужно убрать фразу "Для разблокировки проведите пальцем по экрану".
Можно на VBS.

Также подскажите как можно менять фразу на другую, вдруг пригодиться...

Iska
03-01-2012, 19:55
njg, попробуйте так:
Option Explicit

Dim strPath2XML
Dim objXMLDOMNode

With WScript.CreateObject("Msxml2.DOMDocument")
.async = False
.setProperty "SelectionLanguage", "XPath"

strPath2XML = "E:\Песочница\0023"

If .load(strPath2XML & "\strings.xml") Then
For Each objXMLDOMNode In .selectNodes("*/string[. = 'Для разблокировки проведите пальцем по экрану']")
objXMLDOMNode.removeChild objXMLDOMNode.firstChild
Next

.save strPath2XML & "\strings2.xml"
End If
End With

WScript.Quit 0

Foreigner
03-01-2012, 20:35
Вариант с POSH:

$xmlfile = gi ".\strings.xml"

$xml = new-object xml
$xml.load($xmlfile.fullname)
$xml.resources.string | ? { $_.name -match "lockscreen_unlock_guide_text" } | % { $_."#text" = '' }
$xml.save($xmlfile.fullname)

Kazun
03-01-2012, 21:04
Вариант с Posh:

(gc strings.xml -enc utf8) -notmatch 'Для разблокировки проведите пальцем по экрану' | out-file result.xml -enc utf8

Foreigner
03-01-2012, 21:18
Kazun, так наверное удалится вся строка, а не "фраза"

Kazun
03-01-2012, 21:27
Foreigner,замените на replace в чем проблема.

njg
04-01-2012, 00:27
Iska, ваш вариант мне понравился, простой и без доп. компонентов. Но только он не работает. Вернее коверкает исходный файл. Некоторые теги были изменены и пропал закрывающий тег за вырезанной фразой.
А нельзя ли на VBS пробежаться по xml файлу как по обычному тексту у вырезать лишнее?

Iska
04-01-2012, 03:15
njg, у меня получается результирующий файл следующего вида:

* в нём приведены к стандарту XML некоторые некорректные тэги (наличествующие символы «>» в тексте заменены на соответствующие коды);

* тэг:
<string name="lockscreen_unlock_guide_text">Для разблокировки проведите пальцем по экрану</string>
после удаления текста выглядит так:
<string name="lockscreen_unlock_guide_text"/>
— это никак не «пропадание закрывающего тэга», а стандартный для XML способ;

* отступы-пробелы заменены на табуляцию.

Результирующий файл проходит проверку на валидность в XML Validator (http://www.w3schools.com/xml/xml_validator.asp). Что не так?

njg
05-01-2012, 04:49
Спасибо! Вставил пропатченный файл в прошивку, прошил телефон, все работает как нужно :)




© OSzone.net 2001-2012