powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Запись в XML
14 сообщений из 14, страница 1 из 1
Запись в XML
    #33285273
babka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть xml,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<?xml version="1.0" encoding="windows-1251"?>
<auth>
    <user>
        <user-name>Admin</user-name>
        <pass>Admin</pass>
        <role> 0 </role>
    </user>
    <user>
        <user-name>ГВЦ</user-name>
        <pass> 123 </pass>
        <role> 1 </role>
    </user>
    <user>
        <user-name>ВЦ</user-name>
        <pass> 321 </pass>
        <role> 2 </role>
    </user>
    <user>
        <user-name>Guest</user-name>
        <pass></pass>
        <role> 3 </role>
    </user>
</auth>
помогите, надо добавлять и редактировать и удалять конструкции типа:

Код: plaintext
1.
2.
3.
4.
<user>
        <user-name>Guest</user-name>
        <pass></pass>
        <role> 3 </role>
    </user>
как это воплотить в жинь с помощью Java
...
Рейтинг: 0 / 0
Запись в XML
    #33285297
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
babkaкак это воплотить в жинь с помощью Java
ну и в чём проблема?, DOM вам в руки
...
Рейтинг: 0 / 0
Запись в XML
    #33285303
Naug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Запись в XML
    #33285323
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разпарсить DOM'ом. Отредактировать коллекцию. Создать Document записать в него коллекцию и заменить файл.
...
Рейтинг: 0 / 0
Запись в XML
    #33285346
babka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2ТимоН, а не подскажете на примере кода как это сделать или ссылки на русскую литературу, а то у меня с английским туговато.
...
Рейтинг: 0 / 0
Запись в XML
    #33285385
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
babka2ТимоН, а не подскажете на примере кода как это сделать или ссылки на русскую литературу, а то у меня с английским туговато.

Здесь, внизу страницы
...
Рейтинг: 0 / 0
Запись в XML
    #33285403
jdev333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или с помощью таких вещей как jaxb и castor - они по вашей xsd схеме сгенерят классы, позволяющие работать с хмл как с обычными объектами ( добавить новый элемент в массив пользователей, создать объект "пользователь и т.д.")

(castor интегрирован с JBuilder - мона мышкой все провернуть )
...
Рейтинг: 0 / 0
Запись в XML
    #33285421
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тынц на русские ресурсы по поводу:
xsd схем, jaxb, castor в студию!!!
...
Рейтинг: 0 / 0
Запись в XML
    #33285480
babka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
может я тупой, я ничего не понял
считываю xml вот так:
<%!
private Element getFirstElementByTagName(Element element, String tagName) {
Element e = null;

NodeList nl = element.getElementsByTagName(tagName);
e = (Element) nl.item(0);


return e;
}

%>
<%!
private String getNodeText(Node node) {
NodeList list = node.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
Node child = list.item(i);

if (child.getNodeType() == Node.CDATA_SECTION_NODE) {
CDATASection section = (CDATASection) child;
return section.getData();
} else if (child.getNodeType() == Node.TEXT_NODE) {
return child.getNodeValue();
}
}
return "";
}

%>
<%

String tmp="";
String tmp1="";
ArrayList users = new ArrayList();
ArrayList pass = new ArrayList();
ArrayList role = new ArrayList();

FileInputStream fis = new FileInputStream(request.getRealPath("\\")+"pass.xml");
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(fis);

Element rootElement = doc.getDocumentElement();
NodeList usersNodeList = rootElement.getElementsByTagName("user");
Element tag;
for(int i=0;i<usersNodeList.getLength();i++)
{
Element userElement = (Element)usersNodeList.item(i);

tag = getFirstElementByTagName(userElement, "user-name");
users.add(getNodeText(tag));
System.out.println(tag);
tag = getFirstElementByTagName(userElement, "pass");
pass.add(getNodeText(tag));

tag = getFirstElementByTagName(userElement, "role");
role.add(getNodeText(tag));
}
%>
хочу что-то добавить:Document
doc = (Document)session.getAttribute("doc");

Element root = (Element)doc.createElement("user");
root.appendChild(root);
root.appendChild(doc.createTextNode("user-name"));
root.appendChild(doc.createTextNode("pass"));
root.appendChild(doc.createTextNode("role"));

надо в user-name и т.д. записать инфу и сохранить изменения, вот
и неплохо было бы поиск организовать по user-name, чтобы можно было удалить ветку user, котораю содержит этот user-name.
Помогите уж, кто может!!!
...
Рейтинг: 0 / 0
Запись в XML
    #33285500
jdev333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тока аглицкие знаю :)
(java.sun.com/xml/jaxb/ www.castor.org/)
ну создать xsd по xml - мона с помощью XMLSpy мышкой ( он сам все генерит, нуна тока опции нужны поставить в некоторых случаях - за 5-10 минут мона разобраться)

в JBuilder кастором нагенерить классы
или в командной строке если jaxb


потом для jaxb (для castor аналогично):

public Auth parseXML(InputStream is) throws JAXBException {

JAXBContext jc = JAXBContext.newInstance("неймспейс для нашего xml ");
Unmarshaller u = jc.createUnmarshaller();
Auth auth = (Auth) u.unmarshal(is);

return auth;
}

потом примерно так работаем:
User[] users = Auth.getUsers();
users[0].setPass("NewPass");
users[0].setPass("NewPass");


из объекта Auth в хмл примерно так :String xml = Marshaller.marshal(auth);

Имхо, удобнее для таких случаев юзать jaxb , чем DOMom мучаться
...
Рейтинг: 0 / 0
Запись в XML
    #33285510
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Запись в XML
    #33285592
babka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2zalexaka, а гда мне нати dom4j
...
Рейтинг: 0 / 0
Запись в XML
    #33288498
yuriypalych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще вариант:
Парсить можно при помощи библиотеки
org.apache.commons.digester.Digester

Запись в файл:
стандартно
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            OutputStreamWriter writer =  new  OutputStreamWriter( new  BufferedOutputStream(
                 new  FileOutputStream(filename),  1024 * 100 ), "windows-1251");

            writer.write("<?xml version=\"1.0\" encoding=\"windows-1251\"?>\n");
            ......
            ......
            ......

            writer.flush();
            writer.close();
...
Рейтинг: 0 / 0
Запись в XML
    #33291270
babka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, очень помогло
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Запись в XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]