Ir para conteúdo
Omar~

Manipular XML com php

Recommended Posts

Blz?!

Então, vou ser direto. Fiz esse arquivo xml aqui para servir de exemplo para a dúvida:

Spoiler

<?xml version="1.0" encoding="UTF-8"?>
<meu_xml>
    <indice_a>
        <titulo>
            Título 1
        </titulo>
        <descricao>
            Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
        </descricao>
        <tipo>
            teste 1
        </tipo>
    </indice_a>

    <indice_b>
        <titulo>
            Título 2
        </titulo>
        <descricao>
            Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
        </descricao>
        <tipo>
            teste 2
        </tipo>
    </indice_b>
</meu_xml>

 

 

O negócio é o seguinte: Como no exemplo tenho 2 entradas nesse arquivo, como eu faria para manipular elas, até mesmo criar novas ou apagar editando o arquivo?

Porque enquanto a ler os dados sempre fiz, mas daí editar o arquivo estou curioso como proceder

 

Só por mostrar mesmo assim é o exemplo de leitura:

Spoiler

<?php
$file = '/meu_xml.xml';
$xml = simplexml_load_file($file);
if (file_exists($file) && count($xml->$getA)) {
    foreach ($xml->$getA as $item) {
         $item->titulo;
         $item->descricao;
    }
}

 

 

Obtenho o valor do índice vindo pelo $_GET o exibo os valores.

A questão é que esses dados dificilmente serão editados no website, mas serão sim. E para evitar re-enviar o arquivo ou mesmo usar o banco para uma coisa que "raramente" será modificada, estou pensado em realizar isso.

 

Re-escrever todo arquivo? Ou teria uma forma de manipular cada índice?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Omar. Tem como você manipular cada índice, tem que usar o DOMDocument pra realizar a alteração. Fiz um exemplo aqui que vai te dar um norte legal:

<?php
$file = 'meu_xml.xml';
$xml = simplexml_load_file($file);

$dom = new DOMDocument("1.0");

// carrega meu_xml.xml
$dom->load($file);
// pega todos os nodes
$root = $dom->documentElement;
// pega o node que você quer percorrer
$indices = $root->getElementsByTagName('indice_a');

foreach ($indices as $indice) {

	// ===========================================================================//
	// 1. aqui você cria um novo node
    $foo_node = $dom->createElement('foo_node', 'aqui vai o valor do novo node');
	// 2. aqui você adiciona o novo node dentro do node indice_a
    $indice->appendchild($foo_node);
    // ===========================================================================//

    // ===========================================================================//
    // aqui você cria um novo node dentro de outro
    // 1. cria o novo node ou pega um já existente
    $baa_node = $dom->createElement('baa_node');
    // 2. adiciona o novo node dentro do node indice_a
    $indice->appendchild($baa_node);
    // 3. adiciona mais um node dentro do node que foi criado anteriormente (baa_node)
    $baa_node->appendchild($dom->createElement("blabla_node", "aqui vai o valor do novo node"));
    // ===========================================================================//

    // ===========================================================================//
    // 1. aqui você pega um node já existente que queira manipular
    $titulo = $indice->getElementsByTagName('titulo')->item(0);
 	// 2. manipule trocando o valor do node, use o ->nodeValue
    $titulo->nodeValue = "alou alouuu";
    // ===========================================================================//

    // ===========================================================================//
    // aqui você pega o conteúdo do node
    // 1. pode usar ->textContent ou ->nodeValue
    $tipo = $indice->getElementsByTagName('tipo')->item(0)->textContent;
    echo $tipo;
    // ===========================================================================//

    // ===========================================================================//
    // 1. descomenta aqui pra você remover o node "descricao"
    // $descricao = $indice->getElementsByTagName('descricao')->item(0);
    // $descricao->parentNode->removeChild($descricao);
    // ===========================================================================//
    
}
// salva as alterações
$dom->save($file);

 

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu @BrunoBit vou dar uma olhada melhor

Porque para criar novo índice tenho que fazer:

Buscar todos índices atuais em array > adicionar novo na array > re-salvar o arquivo inteiro.

Para apagar:

Buscar todos índices atuais em array > apagar o índice em questão > re-criar a array > re-salvar com a nova array.

Para editar segue o mesmo esquema de apagar e editar juntos. Tenho que pegar o índices salvar-lo separadamente da array > armazenar então array em um VAR > fazer a edição > inserir o novo índice na VAR > re-fazer o array inicial > re-escrever todo arquivo novamentente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse exemplo que dei dá pra fazer isso, percorrer pelos array, apagar, reescrever, por isso separei os exemplos em blocos. Outro detalhe que esqueci de colocar foi a indentação. Pra indentar o xml no arquivo é só acrescentar essas linhas no início:

$dom = new DOMDocument("1.0");
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;

Pq se não vai ficar um grudado no outro, aí pra ler fica complicado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por DANIEL ALVES BARBOSA
      Na verdade não é uma dúvida e sim um exemplo de código que fiz para capturar os atributos do XML e ler com php.
       
      <?xml version="1.0" encoding="utf-8"?> <FDBS Version="15"> <Manager UpdatesRegistry="True"> <TableList> <Table Name="FDQuery2" SourceName="ORCAMENTO_ITENS" SourceID="1" TabID="0" EnforceConstraints="False" MinimumCapacity="50"> <ColumnList> <Column Name="ID" SourceName="ID" SourceID="1" DataType="Int32" Searchable="True" Base="True" OInUpdate="True" OInWhere="True" OInKey="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ID"/> <Column Name="ITEM" SourceName="ITEM" SourceID="2" DataType="Int32" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ITEM"/> <Column Name="ID_PRODUTO" SourceName="ID_PRODUTO" SourceID="3" DataType="Int32" Searchable="True" Base="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ID_PRODUTO"/> <Column Name="ID_ORCAMENTO" SourceName="ID_ORCAMENTO" SourceID="4" DataType="Int32" Searchable="True" Base="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ID_ORCAMENTO"/> <Column Name="QUANTIDADE" SourceName="QUANTIDADE" SourceID="5" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="QUANTIDADE" SourcePrecision="18" SourceScale="6"/> <Column Name="VALOR_UNITARIO" SourceName="VALOR_UNITARIO" SourceID="6" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="VALOR_UNITARIO" SourcePrecision="18" SourceScale="6"/> <Column Name="VALOR_CUSTO" SourceName="VALOR_CUSTO" SourceID="7" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="VALOR_CUSTO" SourcePrecision="18" SourceScale="6"/> <Column Name="VALOR_PRODUTOS" SourceName="VALOR_PRODUTOS" SourceID="8" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="VALOR_PRODUTOS" SourcePrecision="18" SourceScale="6"/> <Column Name="TOTAL_ITEM" SourceName="TOTAL_ITEM" SourceID="9" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="TOTAL_ITEM" SourcePrecision="18" SourceScale="6"/> <Column Name="DESCONTO" SourceName="DESCONTO" SourceID="10" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="DESCONTO" SourcePrecision="18" SourceScale="6"/> <Column Name="ACRESCIMO" SourceName="ACRESCIMO" SourceID="11" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ACRESCIMO" SourcePrecision="18" SourceScale="6"/> <Column Name="ACRESCIMO_RATEIO" SourceName="ACRESCIMO_RATEIO" SourceID="12" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ACRESCIMO_RATEIO" SourcePrecision="18" SourceScale="6"/> <Column Name="DESCONTO_RATEIO" SourceName="DESCONTO_RATEIO" SourceID="13" DataType="FmtBCD" Precision="18" Scale="6" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="DESCONTO_RATEIO" SourcePrecision="18" SourceScale="6"/> <Column Name="CANCELADO" SourceName="CANCELADO" SourceID="14" DataType="AnsiString" Size="1" Searchable="True" AllowNull="True" FixedLen="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="CANCELADO" SourceSize="1"/> <Column Name="MOVIMENTA_ESTOQUE" SourceName="MOVIMENTA_ESTOQUE" SourceID="15" DataType="AnsiString" Size="1" Searchable="True" AllowNull="True" FixedLen="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="MOVIMENTA_ESTOQUE" SourceSize="1"/> <Column Name="DESC_ACRES" SourceName="DESC_ACRES" SourceID="16" DataType="AnsiString" Size="15" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="DESC_ACRES" SourceSize="15"/> <Column Name="ID_GRADE_ITENS" SourceName="ID_GRADE_ITENS" SourceID="17" DataType="Int32" Searchable="True" AllowNull="True" Base="True" OAllowNull="True" OInUpdate="True" OInWhere="True" OriginTabName="ORCAMENTO_ITENS" OriginColName="ID_GRADE_ITENS"/> </ColumnList> <ConstraintList/> <ViewList/> <RowList> <Row RowID="0"> <Original ID="1" ITEM="1" ID_PRODUTO="1" ID_ORCAMENTO="1" QUANTIDADE="1" VALOR_UNITARIO="2.5" VALOR_CUSTO="0" VALOR_PRODUTOS="2.5" TOTAL_ITEM="2.5" DESCONTO="0" ACRESCIMO="0" ACRESCIMO_RATEIO="0" DESCONTO_RATEIO="0" CANCELADO="N" MOVIMENTA_ESTOQUE="N" DESC_ACRES=""/> </Row> <Row RowID="1"> <Original ID="2" ITEM="1" ID_PRODUTO="1" ID_ORCAMENTO="2" QUANTIDADE="1" VALOR_UNITARIO="2.5" VALOR_CUSTO="0" VALOR_PRODUTOS="2.5" TOTAL_ITEM="2.5" DESCONTO="0" ACRESCIMO="0" ACRESCIMO_RATEIO="0" DESCONTO_RATEIO="0" CANCELADO="N" MOVIMENTA_ESTOQUE="N" DESC_ACRES=""/> </Row> </RowList> </Table> </TableList> <RelationList/> <UpdatesJournal> <Changes/> </UpdatesJournal> </Manager> </FDBS>  
      Arquivo php
       
      <?php $xml = simplexml_load_file('uploads/teste3.xml'); foreach ($xml->children()->children()->children()->children() as $node) { foreach ($node as $value) { foreach ($value as $value2) { $id2 = "NULL"; $item2= $value2['ITEM']; $id_produto2 = $value2['ID_PRODUTO']; $id_orcamento2 = $value2['ID_ORCAMENTO']; $id_quantidade2 = $value2['QUANTIDADE']; $valor_unitario2 = $value2['VALOR_UNITARIO']; $valor_custo2 = $value2['VALOR_CUSTO']; $valor_produtos2 = $value2['VALOR_PRODUTOS']; $total_item2 = $value2['TOTAL_ITEM']; $desconto2 = $value2['DESCONTO']; $acrescimo2 = $value2['ACRESCIMO']; $acrescimo_rateio = $value2['ACRESCIMO_RATEIO']; $desconto_rateio = $value2['DESCONTO_RATEIO']; $cancelado2 = $value2['CANCELADO']; $cancelado2 = "'$cancelado2'"; $movimenta_estoque2 = $value2['MOVIMENTA_ESTOQUE']; $movimenta_estoque2 = "'$movimenta_estoque2'"; $desconto_acres = "NULL"; $id_grade_itens = "NULL"; echo $id2."<br>".$item2."<br>".$id_produto2."<br>".$id_orcamento2."<br>".$id_quantidade2."<br>".$valor_unitario2."<br>... etc"."<br>"; } } }  
    • Por shacapell
      Olá pessoal!
      Entendo um pouco de html e tenho um blog em xml, então preciso da ajuda de vocês.
      Eu queria tirar essa função de slide de posts e colocar uma imagem de fundo do mesmo tamanho e um texto com link por cima. Vejam > www.babadeanimais.net
       
      Outra coisinha, nos posts e páginas está configurado para a primeira imagem ficar no topo ocupando todo o espaço. Queria tirar isso, mas nem sei onde está no código.
       
      #main-slider .slick-prev,.main-gallery .slick-prev,#main-slider .slick-next,.main-gallery .slick-next,.related-stuff .slick-prev,.related-stuff .slick-next{font-size:25px;color:#000;display:block;text-align:center;background:#fff;outline:0;padding:0;width:35px;height:50px;position:absolute;top:50%;margin-top:-15px;cursor:pointer;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;transition:all .3s ease} button.slick-nav.slick-prev i{color:#252525} button.slick-nav.slick-next i{color:#252525} span.feat-cat a{color:#FFF;padding:5px 15px;background-color:$(theme.sec.color);border-radius:40px} h2.feat-title a{color:#252525} .feat-readmore a{color:#FFF;padding:6px 10px;background-color:$(theme.color);box-shadow:3px 3px 0 0 $(theme.sec.color)} .feat-readmore a:hover{box-shadow:none} .related-stuff .slick-prev,.related-stuff .slick-next{top:30%} #main-slider .slick-prev{left:200px} .main-gallery .slick-prev,.related-stuff .slick-prev{left:-40px} .main-gallery .slick-next,.related-stuff .slick-next{right:-40px} .main-gallery:hover .slick-prev,.related-stuff:hover .slick-prev{left:0} .main-gallery:hover .slick-next,.related-stuff:hover .slick-next{right:0} .slick-prev:before,.slick-next:before{content:''} #main-slider .slick-next{right:200px} .item{position:relative} #section-featured{position:relative;min-height:50px;width:100%} #main-slider div img{max-width:100%;height:490px;object-fit:cover;width:100%} #main-slider div span.title{font-size:19px;color:#fff;position:absolute;bottom:0;left:0;width:100%;padding:25px;-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;transition:all .3s} div#main-slider{width:100%;overflow:hidden} div#bt-slider-main .title{display:none} .feat-wrapper{position:absolute;left:10px;bottom:120px;right:10px;padding:20px;width:60%;margin:0 auto} .feat-wrapper-inner{position:relative;height:100%;z-index:99;width:100%;display:table;padding:40px;vertical-align:middle;text-align:center;border-top:0;background:#fff;color:#fff;-webkit-box-shadow:9px 9px 0 0 #F1F1F1;-moz-box-shadow:9px 9px 0 0 #F1F1F1;box-shadow:9px 9px 0 0 #F1F1F1} .feat--inner{vertical-align:middle;display:table-cell} .feat-header{margin-bottom:0;padding:0 20px} .feat-cat:before{content:'';display:inline-block;height:2px;width:40px;background:#A2A2A2;margin-bottom:5px;margin-right:0} .feat-cat:after{content:'';display:inline-block;height:2px;width:40px;background:#A2A2A2;margin-bottom:5px;margin-left:0} span.feat-cat{font-size:12px;letter-spacing:1px;padding-bottom:2px;display:inline-block;margin:0 0 10px 5px;font-weight:400;text-transform:uppercase} .slick-slide{opacity:1;transition:.2s} .item.slick-slide.slick-active.slick-center{opacity:1;transition:.2s} .slick-slider{position:relative;display:block;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent} .slick-list{position:relative;display:block;overflow:hidden;margin:0;padding:0} .slick-list:focus{outline:none} .slick-list.dragging{cursor:pointer;cursor:hand} .slick-slider .slick-track,.slick-slider .slick-list{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)} .slick-track{position:relative;top:0;left:0;display:block} .slick-track:before,.slick-track:after{display:table;content:''} .slick-track:after{clear:both} .slick-loading .slick-track{visibility:hidden} .slick-slide{display:none;float:left;height:100%;min-height:1px} [dir='rtl'] .slick-slide{float:right} .slick-slide img{display:block} .slick-slide.slick-loading img{display:none} .slick-slide.dragging img{pointer-events:none} .slick-initialized .slick-slide{display:block} .slick-loading .slick-slide{visibility:hidden} .slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent} .slick-prev,.slick-next{font-size:0;line-height:0;position:absolute;top:50%;display:block;width:20px;height:20px;margin-top:-10px;padding:0;cursor:pointer;color:transparent;border:none;outline:none;background:transparent} .slick-prev:hover,.slick-prev:focus,.slick-next:hover,.slick-next:focus{color:transparent;outline:none;background:transparent} .slick-prev:hover:before,.slick-prev:focus:before,.slick-next:hover:before,.slick-next:focus:before{opacity:1} .slick-prev.slick-disabled:before,.slick-next.slick-disabled:before{opacity:.25} .slick-prev:before,.slick-next:before{font-family:'slick';font-size:20px;line-height:1;opacity:.75;color:#252525;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} .slick-prev{left:-25px} [dir='rtl'] .slick-prev{right:-25px;left:auto} .slick-next{right:-25px} [dir='rtl'] .slick-next{right:auto;left:-25px} .slick-slider{margin-bottom:30px} .slick-dots{text-align:center} .slick-dots li{position:relative;display:inline-block;width:20px;height:20px;margin:0 8px;padding:0;cursor:pointer} .slick-dots li button{font-size:0;line-height:0;display:block;width:20px;height:20px;padding:5px;cursor:pointer;color:transparent;border:0;outline:none;background:transparent} .slick-dots li button:hover,.slick-dots li button:focus{outline:none} .slick-dots li button:hover:before,.slick-dots li button:focus:before{opacity:1;background-color:$(theme.color)} .slick-dots li button:before{position:absolute;top:0;display:block;left:0;content:'';text-align:center;opacity:.35;height:5px;width:22px;background-color:#656464;margin-top:5px;transition:.2s;border-radius:50px} .slick-dots li.slick-active button:before{opacity:.75;background-color:$(theme.color)} @media only screen and (max-width:767px) and (min-width:480px) { #main-slider .slick-prev,.main-gallery .slick-prev,.related-stuff .slick-prev{left:0} #main-slider .slick-next,.main-gallery .slick-next,.related-stuff .slick-next{right:0} #main-slider div img{height:350px} .feat-wrapper{bottom:15px;padding:10px;width:430px} h2.feat-title{line-height:32px;font-size:23px} .thumbnail{margin:0 auto} .item.slick-slide:before{opacity:1;background:0 0} } @media only screen and (max-width:479px) { .fixedheader .grid,span.feat-cat{display:none} .header img,.thumbnail{margin:0 auto} #main-slider .slick-next{right:0} #main-slider .slick-prev{left:0} #main-slider div img{height:275px} .gal4 img{height:250px} .feat-readmore{width:135px} img.thumb-single{max-height:300px} h2.feat-title{line-height:32px;font-size:23px} .feat-wrapper{bottom:15px;padding:5px;width:94%} } .large-12.column{text-align:center} @-webkit-keyframes justified-gallery-show-caption-animation { from{opacity:0} to{opacity:.7} } @-moz-keyframes justified-gallery-show-caption-animation { from{opacity:0} to{opacity:.7} } @-o-keyframes justified-gallery-show-caption-animation { from{opacity:0} to{opacity:.7} } @keyframes justified-gallery-show-caption-animation { from{opacity:0} to{opacity:.7} } @-webkit-keyframes justified-gallery-show-entry-animation { from{opacity:0} to{opacity:1} } @-moz-keyframes justified-gallery-show-entry-animation { from{opacity:0} to{opacity:1} } @-o-keyframes justified-gallery-show-entry-animation { from{opacity:0} to{opacity:1} } @keyframes justified-gallery-show-entry-animation { from{opacity:0} to{opacity:1} } .justified-gallery{width:100%;position:relative;overflow:hidden;margin-bottom:30px} .justified-gallery&gt;a,.justified-gallery&gt;div{position:absolute;display:inline-block;overflow:hidden;opacity:0;filter:alpha(opacity=0)} .justified-gallery&gt;a&gt;a&gt;img,.justified-gallery&gt;a&gt;img,.justified-gallery&gt;div&gt;a&gt;img,.justified-gallery&gt;div&gt;img{position:absolute;top:50%;left:50%;margin:0;padding:0;border:0} .justified-gallery&gt;a&gt;.caption,.justified-gallery&gt;div&gt;.caption{display:none;position:absolute;bottom:0;padding:5px;background-color:#000;left:0;right:0;margin:0;color:#fff;font-size:12px;font-weight:300;font-family:sans-serif} .justified-gallery&gt;a&gt;.caption.caption-visible,.justified-gallery&gt;div&gt;.caption.caption-visible{display:initial;opacity:.7;filter:&quot;-webkit-animation:justified-gallery-show-caption-animation 500ms 0 ease;-moz-animation:justified-gallery-show-caption-animation 500ms 0 ease;-ms-animation:justified-gallery-show-caption-animation 500ms 0 ease} .justified-gallery&gt;.entry-visible{opacity:1;filter:alpha(opacity=100);-webkit-animation:justified-gallery-show-entry-animation 500ms 0 ease;-moz-animation:justified-gallery-show-entry-animation 500ms 0 ease;-ms-animation:justified-gallery-show-entry-animation 500ms 0 ease} .justified-gallery&gt;.spinner{position:absolute;bottom:0;margin-left:-24px;padding:10px 0;left:50%;opacity:initial;filter:initial;overflow:initial} .justified-gallery&gt;.spinner&gt;span{display:inline-block;opacity:0;filter:alpha(opacity=0);width:8px;height:8px;margin:0 4px;background-color:#000;border-radius:6px} ]]></b:skin>  
    • Por DjjrGabriel4
      Boa tarde! Sou dono de um grande serviço de iptv, e no momento estou vendendo tvboxes(semelhante ao apple tv porém com android), mas precisava alterar o launcher, pois esses tvboxes seriam somente para o iptv, sem a opção do usuário poder instalar outros aplicativos e/ou mexer nas configurações do aparelho. Será que é possivel transformar um apk em um launcher?

      Meu apk: https://silveiraiptv.com.br/app.apk
    • Por eduardohaag
      Olá estou criando um sistema onde preciso calcular a previsão de envio do pedido em dias uteis, para isso estou usando um webservice gratuito que retorna um xml, porém estou tendo o erroSystem.XML.XmlException: 'Dados no nível raiz inválidos. Linha 1, posição 1.'
       
      Meu código é 
      Sub Preenchedata() Dim sql = "SELECT PrazoPadraoProducao FROM Configuracoes" Dim dr As DataTable = AcessoDB.ExecutarComando(sql, CommandType.Text, Nothing, AcessoDB.TipoDeComando.ExecuteDataTable) Dim ds As New DataSet Dim xml As String = "https://elekto.com.br/api/Calendars/br-BC/Add?initialDate=" & Now.Year & "-" & Now.Month & "-" & Now.Day & "&days=" & dr.Rows(0).Item(0) & "&type=work" ds.ReadXml(xml)  
      e o xml retornado é 
       
      <dateTime xmlns="http://schemas.microsoft.com/2003/10/Serialization/">2019-05-03T00:00:00Z</dateTime>  
      Alguém tem alguma ideia de como posso eliminar o erro?
    • Por tiagosp
      Estou tentando enviar uma solicitação ao web servirço do Correios, porém não consigo obter a resposta.
      var cep = document.getElementById("cep").value; var doc = "http://cep.republicavirtual.com.br/web_cep.php?cep=" + cep + "&formato=xml" var xhttp = new XMLHttpRequest(); xhttp.open("GET", doc, false); xhttp.send(); O parametro cep é passado pela url, logo imagino que o método seja GET, deixei o terceiro parametro como false, pois estou apenas testando e não conheço nada de javascript, sei que quando esse parametro é true, é preciso checar quando chega a resposta.
      Por fim, o xhttp.response não retorna nada...
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.