Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Программирование / Programming (https://forum.zone-game.info/forumdisplay.php?f=98)
-   -   Замена nodeValue по nodeNameItem (https://forum.zone-game.info/showthread.php?t=41407)

finfan 18.09.2016 10:51

Замена nodeValue по nodeNameItem
 
Доброго времени суток.

Столкнулся с вопросом, как заменять nodeValue в NamedNodeMap?
К примеру есть аттрибут со значением, и мне нужно заменить его значение на новое с сохранением изменений (файла).

Спасибо!

Mangol 19.09.2016 20:39

Re: Замена nodeValue по nodeNameItem
 
PHP код:

public static void main(String[] argsthrows IOExceptionParserConfigurationExceptionTransformerException {
        
DocumentBuilderFactory factory DocumentBuilderFactory.newInstance();
        
Document document;
        try {
            
document factory.newDocumentBuilder().parse(new File("test.xml"));
            final 
NodeList nodeList document.getFirstChild().getChildNodes();
            
IntStream.range(0nodeList.getLength()).forEach(-> {
                
Node node nodeList.item(i);
                
IntStream.range(0node.getChildNodes().getLength()).forEach(-> {
                    final 
Node nodeBlock node.getChildNodes().item(a);
                    if(
nodeBlock.hasAttributes()) {
                        
IntStream.range(0nodeBlock.getAttributes().getLength()).forEach(indexAtt -> {
                            
Node attribute nodeBlock.getAttributes().item(indexAtt);
                            if(
attribute.getNodeName().equals("name")) {
                                
attribute.setNodeValue("finfan " ThreadLocalRandom.current().nextInt());
                            }
                            else {
                                
attribute.setNodeValue(String.valueOf(ThreadLocalRandom.current().nextInt()));
                            }
                        });
                    }
                });
            });
            
TransformerFactory.newInstance().newTransformer().transform(new DOMSource(document), new StreamResult(new File("new_test.xml")));
        }
        catch(
SAXException e) {
            
e.printStackTrace();
        }
    } 

old xml ...
PHP код:

<list>
    <
test name="finfan">
        <
set name="finfan" value="replace"/>
    </
test>
    <
test name="finfan">
        <
set name="finfan" value="replace"/>
    </
test>
    <
test name="finfan">
        <
set name="finfan" value="replace"/>
    </
test>
</list> 


new replace all xml =\


PHP код:

<?xml version="1.0" encoding="UTF-8" standalone="no"?/>
<list>
    <
test name="finfan">
        <
set name="finfan -1501716197" value="-977792414"/>
    </
test>
    <
test name="finfan">
        <
set name="finfan -392286072" value="-230381045"/>
    </
test>
    <
test name="finfan">
        <
set name="finfan 1510237655" value="1910193530"/>
    </
test>
</list>


Mangol 19.09.2016 21:55

Re: Замена nodeValue по nodeNameItem
 
Так же хочу добавить! Следует указывать какие классы используете. Т.к. я уже давно не имею дел с w3c, я с трудом вспомнил где это вообще 0о.
Так же можно для таких целей использовать другой способ сериализации , десериализации такие фраймы как jdom2, dom4j(alpha2), и множество других удобных в использовании фреймов. Ну тут конечно каждый фапает как ему стрельнет в его голове....


Текущее время: 09:54. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot