Есть текстовый файл(txt)
которую хочу перевести в xml с простой структурой.Только один тег.Трудности возникли при добавлении атрибута к тегу.
Есть коллекция в ячейках которого есть числовые значения , они указывают скольким тегам нужно добавлять атрибут.А атрибуты я добавляю по нарастанию.Т.Е. напр. если int count [] = new int[]{5,3};
то первым пяти тегам нужно добавить атрибут attr=0
а следующим трем attr=1
.В итоге должно быть как снизу на xml.
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item attr="0">
текст
</item>
<item attr="0">
текст
</item>
<item attr="0">
текст
</item>
<item attr="0">
текст
</item>
<item attr="0">
текст
</item>
<item attr="1">
текст
</item>
<item attr="1">
текст
</item>
<item attr="1">
текст
</item>
</root>
CODE:
StaticArrayStrings staticArrayStrings = new StaticArrayStrings();
staticArrayStrings.initList5();
File f = new File("text.txt");
InputStream inputStream = new FileInputStream(f);
InputStreamReader inputStreamReader = new
InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
Element element=null;
int position=0;
int count=0;
int item=0;
String s;
while((s=bufferedReader.readLine())!=null){
//получаю число,сколько раз нужно пробежаться.
item = Integer.valueOf(staticArrayStrings.list5.get(position).toString());
element = new Element("item");
element.attr("position",""+position);
element.appendText(s);
//вот тут нужна помощь.position нужно инкрементить после того
//как цикл пробежался item-й раз.Но если в ячейке след.число
//меньше count то он уже не сработает.Помогите пожалуйста кто чем сможет.
if(count==item){
position++;
}
count++;
System.out.println(element);
} System.out.println("общее число строк : "+count);
Класс в котором список значений :
public class StaticArrayStrings {
public List list5 = new ArrayList();
void initList5(){
list5.add(3);
list5.add(2);
list5.add(3);
list5.add(2);
list5.add(1);
list5.add(165);
list5.add(206);
list5.add(75);
list5.add(129);
list5.add(109);
list5.add(123);
list5.add(111);
list5.add(43);
list5.add(52);
list5.add(99);
list5.add(128);
list5.add(111);
}
}
Вам нужно завести еще счетчик, который будет указывать сколько элементов из текущей группы Вы израсходовали
Element element=null;
int position=0;
int count=0;
int curCnt=0;
// Получаем объем первой группы
int item = Integer.valueOf(staticArrayStrings.list5.get(position).toString());
while((s=bufferedReader.readLine())!=null){
// Если исчерпали элементы из текущей группы, то
if (curCnt == item) {
// сбрасываем счетчик,
curCnt = 0;
// увеличиваем номер группы
position++;
// считываем следующий объем
item = Integer.valueOf(staticArrayStrings.list5.get(position).toString());
}
element = new Element("item");
element.attr("position",""+position);
element.appendText(s);
count++;
curCnt++; // увеличиваем число использованных элементов
System.out.println(element);
} System.out.println("общее число строк : "+count);
Вместо
curCnt++; // увеличиваем число использованных элементов
можно писать
item--;
и тогда блок проверки условия перепишется так
// Если исчерпали элементы из текущей группы, то
if (item == 0) {
// увеличиваем номер группы
position++;
// считываем следующий объем
item = Integer.valueOf(staticArrayStrings.list5.get(position).toString());
}
А еще лучше так, если в Вашем массиве допускаются нули
// Если исчерпали элементы из текущей группы, то
while (item <= 0) {
// увеличиваем номер группы
position++;
// считываем следующий объем
item = Integer.valueOf(staticArrayStrings.list5.get(position).toString());
}
P.S. А почему Вы не пишете так?
public List<Integer> list5 = new ArrayList<>();
тогда вот эта порнография
item = Integer.valueOf(staticArrayStrings.list5.get(position).toString());
превратится в такой элегантный код
item = staticArrayStrings.list5.get(position);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подходит ли такой код для получения единицы с вероятностью 5 процентов?
При сборке пакета Maven выдает ошибку, не пойму , что не так
Для стилизации небольшого форума использую BubbleViewВ форуме почти все надо строить программно