Обновление текста в том же XML-файле с использованием сценария оболочки [duplicate]

Для меня - здесь менее запутанный способ сделать socket.setTimeout

var request=require('https').get(
    url
   ,function(response){
        var r='';
        response.on('data',function(chunk){
            r+=chunk;
            });
        response.on('end',function(){
            console.dir(r);            //end up here if everything is good!
            });
        }).on('error',function(e){
            console.dir(e.message);    //end up here if the result returns an error
            });
request.on('error',function(e){
    console.dir(e);                    //end up here if a timeout
    });
request.on('socket',function(socket){
    socket.setTimeout(1000,function(){
        request.abort();                //causes error event ↑
        });
    });
0
задан Schu 25 March 2015 в 21:46
поделиться

1 ответ

Вы не указали свой входной документ, но я предполагаю, что это следующее, взятое из документации xmlstarlet :

<xml>
  <table>
    <rec id="1">
      <numField>123</numField>
      <stringField>String Value</stringField>
    </rec>
    <rec id="2">
      <numField>346</numField>
      <stringField>Text Value</stringField>
    </rec>
    <rec id="3">
      <numField>-23</numField>
      <stringField>stringValue</stringField>
    </rec>
  </table>
</xml>

xmlstarlet изменяет файл, но результат отправляется на стандартный вывод, не сохраняется в исходном файле. Используйте другую опцию --inplace, чтобы изменить файл на месте:

$ xml ed --inplace -u "/xml/table/rec[@id='3']/@id" -v 5 rec.xml

Затем:

$ cat rec.xml
<?xml version="1.0"?>
<xml>
  <table>
    <rec id="1">
      <numField>123</numField>
      <stringField>String Value</stringField>
    </rec>
    <rec id="2">
      <numField>346</numField>
      <stringField>Text Value</stringField>
    </rec>
    <rec id="5">
      <numField>-23</numField>
      <stringField>stringValue</stringField>
    </rec>
  </table>
</xml>

Кстати, этот вопрос, кажется, задает нечто очень похожее на этот вопрос .


EDIT: как было предложено @npostavs, этот параметр указан в справке:

$ xml edit --help
...
-L (or --inplace)   - edit file inplace
...
10
ответ дан Community 16 August 2018 в 04:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: