como usar o xpath com xelement ou linq?
<p>considere o seguinte xml:</p><pre><code>&lt;response&gt; &lt;status\_code&gt;200&lt;/status\_code&gt; &lt;status\_txt&gt;ok&lt;/status\_txt&gt; &lt;data&gt; &lt;url&gt;http://bit.ly/b47lvi&lt;/url&gt; &lt;hash&gt;b47lvi&lt;/hash&gt; &lt;global\_hash&gt;9eja3m&lt;/global\_hash&gt; &lt;long\_url&gt;http://www.tumblr.com/docs/en/api#api\_write&lt;/long\_url&gt; &lt;new\_hash&gt;0&lt;/new\_hash&gt; &lt;/data&gt; &lt;/response&gt; </code></pre><p>estou procurando uma maneira muito curta de obter apenas o valor do <code>&lt;hash&gt;</code> elemento. eu tentei:</p><pre><code>var hash = xml.element("hash").value; </code></pre><p>mas isso não está funcionando. é possível fornecer uma consulta xpath para um <code>xelement</code>? eu posso fazer isso com os mais velhos <code>system.xml</code> framework, fazendo algo como:</p><pre><code>xml.node("/response/data/hash").value </code></pre><p>existe algo assim em um espaço para nome linq?</p><hr><p>atualizar:</p><p>depois de brincar um pouco mais com isso, encontrei uma maneira de fazer o que estou tentando fazer:</p><pre><code>var hash = xml.descendants("hash").firstordefault().value; </code></pre><p>eu ainda estaria interessado em ver se alguém tem uma solução melhor?</p>
<p>para usar o xpath com linq to xml, adicione uma declaração de uso para <code>system.xml.xpath</code>, isso trará os métodos de extensão de <a href="http://msdn.microsoft.com/en-us/library/system.xml.xpath.extensions\_methods.aspx"><code>system.xml.xpath.extensions</code></a> no escopo.</p><p>no seu exemplo:</p><pre class="lang-cs prettyprint-override"><code>var value = (string)xml.xpathevaluate("/response/data/hash"); </code></pre>
<p>você pode tentar colocar uma nova linha nos dados:</p><pre><code>&lt;data&gt;foo bar baz baz bar&lt;/data&gt; </code></pre><p>se isso não funcionar, talvez seja necessário analisar a string manualmente.</p><p>se você precisar de xaml direto, é fácil:</p><pre class="lang-xml prettyprint-override"><code>&lt;textblock&gt; lorem &lt;linebreak/&gt; ipsum &lt;/textblock&gt; </code></pre> <p>boa noite, afrânio! como vai?</p>
<p>o <code>event</code> é um objeto javascript com informações relativas ao evento que acabou de acontecer ( <code>onchange</code> no caso desse exemplo ). o próprio javascript se encarrega de construir esse objeto sempre que ocorrer o tal evento. <strong>portanto</strong>, como vc mesmo falou, basicamente pegar o name e o value através do <code>event.target</code> que é o elemento ( o campo de texto, nesse caso ) que gerou o evento!</p>
<p>pegou a ideia? qualquer coisa é só falar!</p>
<p>grande abraço e bons estudos, meu aluno!</p> <p>para reconstruir o cache de comandos executáveis, use <code>rehash</code> ou <code>hash -rf</code>.</p><p>verifique se você não desmarcou o <code>hash\_list\_all</code> opção (causa menos acessos ao disco, mas faz com que o cache seja atualizado com menos frequência).</p><p>se não quiser digitar um comando, você pode dizer ao zsh para não confiar no cache ao concluir, colocando a seguinte linha no seu <code>~/.zshrc</code>¹:</p><pre><code>zstyle ":completion:*:commands" rehash 1 </code></pre><p>existe um custo de desempenho, mas hoje é insignificante em uma configuração típica de área de trabalho. (não é se você tiver <code>$path</code> no nfs ou em um sistema sem memória ram.)</p><p>o comando <code>zstyle</code> está documentado na página do manual <code>zshmodule</code>. os valores dos estilos estão documentados nas páginas de manual <code>zshcompsys</code> e <code>zshcompwid</code>, ou você pode ler a fonte (aqui, das <code>\_command\_names</code> função). se você quiser alguma documentação legível ... se você encontrar alguma, me avise!</p><p>¹ <sub>requer zsh≥4.3.3, obrigado <a href="https://unix.stackexchange.com/users/1107/chris-johnsen">chris johnsen</a> </sub></p> Opção 1 é de longe o padrão. A fraqueza texto simples geralmente é superado pela aplicação SSL durante o login para que a senha é, pelo menos criptografados durante o trânsito.


**Edit:** Eu sugiro que você siga a resposta aceitos para essa pergunta.


Não se esqueça de exigir um [nonce](http://en.wikipedia.org/wiki/Cryptographic_nonce) para o seu pedido. Isso ajudará a protegê-lo contra ataques de repetição.


**Editar o segundo:** Wayne cuidadosamente mencionou que você deve [sal](https://stackoverflow.com/questions/674904/salting-your-password-best-practices) sua senha antes de hash. Aqui estão algumas dicas básicas:


1. Não importa se o seu sal é um prefixo, postfix, ou infix
2. Seu sal deve ser grande, aleatório, e complexo.
3. Seu sal deve ser único por valor salgada. O sal em si não precisa ser criptografados. ```
header('Content-type: text/html; charset=UTF-8') ;

/**
 * Encodes HTML safely for UTF-8. Use instead of htmlentities. 
 *
 * @param string $var 
 * @return string 
 */
function html_encode($var)
{
    return htmlentities($var, ENT_QUOTES, 'UTF-8');
}

```

Esses dois me salvou e eu acho que agora está *trabalhando* . Eu vou voltar se eu continuar a encontrar problemas. Devo armazená-lo no DB, por exemplo, como "&" ou como "&"? olá rafael,quando for construir elementos html na página, uma dica é você inserir diretamente no corpo, para evitar o uso excessivo do echo e também porque não é uma boa prática de programação o jei... <p>tente isto:</p><pre><code>using system; using system.io; using system.text; using system.xml.linq; class test { static void main() { xdocument doc = xdocument.load("test.xml", loadoptions.preservewhitespace); doc.declaration = new xdeclaration("1.0", "utf-8", null); stringwriter writer = new utf8stringwriter(); doc.save(writer, saveoptions.none); console.writeline(writer); } private class utf8stringwriter : stringwriter { public override encoding encoding { get { return encoding.utf8; } } } } </code></pre><p>claro, você não nos mostrou como está construindo o documento, o que dificulta o teste ... acabei de tentar com uma <code>xdocument</code> construída à mão e que também contém o espaço em branco relevante.</p> <p>oi tacio, é possível fazer sem lib, no entanto, vai demandar um conhecimento mais profundo da linguagem javascript e esse não é o foco do treinamento de lógica, que tem maior foco na lógica. inclusive, nem era necessário ter as outras tag&#39;s que você colocou (acredito que você já tenha algum experiência com html, por isso quis adiciona-las).</p>
<p>no entanto, para lançar uma luz no problema apresentado por você, vou tentar resolvê-lo usando a menor quantidade de código possível para que você tenha um norte a media que for evoluindo na linguagem javascript. beleza?</p>
<p>vou explicar as particularidades em comentário no código. fui verboso nos nomes das variáveis para deixar claro o que cada parte esta fazendo:</p>
<pre class="prettyprint"><code>function id( el ){

 return document.getelementbyid( el );
}
function getmoney( el ){
 var money &#61; id( el ).value.replace( &#39;,&#39;, &#39;.&#39; );
 return parsefloat( money )*100;
}
function soma() {
 var total &#61; getmoney(&#39;campo1&#39;)&#43;getmoney(&#39;campo2&#39;)&#43;getmoney(&#39;campo3&#39;);
 // usando a nova função!
 id(&#39;campo4&#39;).value &#61; numeroparareal(total/100);
}

// nova função! a que faz a conversão!
function numeroparareal(numero) {

 console.log(numero);
 // todo número possui a função to fixed que o converte para string com o número de casas decimais que indicarmos.
 var totalcomdoisdigitoscomostring &#61; numero.tofixed(2);

 // veja o resultado!
 console.log(totalcomdoisdigitoscomostring);

 // como nosso numero é uma string, toda string possui o método replace que permite trocar parte dele. no caso, estamos trocando ponto por vírgula. o método devolve uma nova string com a modificação.
 var numerocomostringcompontotrocadoporvirgula &#61; totalcomdoisdigitoscomostring.replace(&#39;.&#39;, &#39;,&#39;);

 // veja o resultado
 console.log(numerocomostringcompontotrocadoporvirgula);

 // agora retorno a concatenação de r$ com a string que represnta nosso número
 return &#34;r$ &#34; &#43; numerocomostringcompontotrocadoporvirgula;
}</code></pre>
<p>ou eu posso fazer assim:</p>
<pre class="prettyprint"><code>function numeroparareal(numero) {

 return &#34;r$ &#34; &#43; numero.tofixed(2).replace(&#39;.&#39;, &#39;,&#39;);
}</code></pre>
<p>mas é como eu disse, a media que for evoluindo na linguagem, se ela é a linguagem de sua escolha, novos truques você aprenderá. </p>
<p>sucesso e bom estudo!</p> Você pode querer dar uma olhada em [WBXML](http://en.wikipedia.org/wiki/WBXML) (Wireless binário XML) é otimizado para o tamanho, e muitas vezes utilizado em telefones celulares, mas não é otimizado para velocidade de análise. rogerio, aprenda a gostar do google, uma simples pesquisa pelo termo validação jquery formulario já trouxe dezenas de links:[url:descricao=https://www.google.com.br/webhp?sourceid=chrome-instant&io...