come usare xpath con xdocument?
<p>c'è una domanda simile, ma sembra che la soluzione non abbia funzionato nel mio caso: <a href="https://stackoverflow.com/questions/3715936/weirdness-with-xdocument-xpath-and-namespaces">stranezza con xdocument, xpath e namespace</a> </p><p>ecco l'xml con cui sto lavorando:</p><pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;report id="id1" type="demo report" created="2011-01-01t01:01:01+11:00" culture="en" xmlns="http://demo.com/2011/demo-schema"&gt; &lt;reportinfo&gt; &lt;name&gt;demo report&lt;/name&gt; &lt;createdby&gt;unit test&lt;/createdby&gt; &lt;/reportinfo&gt; &lt;/report&gt; </code></pre><p>e di seguito è riportato il codice che pensavo dovesse funzionare ma non ha funzionato ...</p><pre><code>xdocument xdoc = xdocument.load(@"c:\samplexml.xml"); xmlnamespacemanager xnm = new xmlnamespacemanager(new nametable()); xnm.addnamespace(string.empty, "http://demo.com/2011/demo-schema"); console.writeline(xdoc.xpathselectelement("/report/reportinfo/name", xnm) == null); </code></pre><p>qualcuno ha qualche idea? grazie.</p>
<p>se hai xdocument è più facile usare linq-to-xml:</p><pre><code>var document = xdocument.load(filename); var name = document.descendants(xname.get("name", @"http://demo.com/2011/demo-schema")).first().value; </code></pre><p>se sei sicuro che xpath sia l'unica soluzione di cui hai bisogno:</p><pre><code>using system.xml.xpath; var document = xdocument.load(filename); var namespacemanager = new xmlnamespacemanager(new nametable()); namespacemanager.addnamespace("empty", "http://demo.com/2011/demo-schema"); var name = document.xpathselectelement("/empty:report/empty:reportinfo/empty:name", namespacemanager).value; </code></pre>
L'errore che si ha è dovuto al fatto che l'espressione `re:test` utilizza una funzione XPATH denominata `test` (dichiarata in uno spazio dei nomi il cui prefisso è `re` ), che è sconosciuto al contesto XSLT. 

 Non so da dove hai preso quell'espressione, ma non è standard, quindi non significa nulla nel contesto Html Agility Pack :-) 

 Per spiegazioni approfondite, consulta questo interessante articolo qui: [Aggiunta di funzioni personalizzate a XPath](http://msdn.microsoft.com/en-us/library/ms950806.aspx) . Nota che *potresti* farlo funzionare usando queste tecniche. 

 Detto questo, ecco un "Html Agility Pack / XPATH" puro: 


```
var pNodes = htmlDoc.DocumentNode.SelectNodes("//p[text()='=.+=']");

```
  Usa un filtro (tra [e]) e il testo della funzione XPATH standard () che significa "testo interno". <p>dipende dal documento .php in cui ti trovi - se ti trovi in ​​item.php, o nei file category-item.php, dovrebbe funzionare quanto segue.</p><p>nella parte superiore del documento, aggiungi questo codice:</p><pre><code>&lt;!-- call to prepare extra fields --&gt; &lt;?php $extrafields = array(); foreach($this-&gt;item-&gt;extra\_fields as $item) { $extrafields[$item-&gt;id] = $item-&gt;value; } ?&gt; </code></pre><p>quindi, ovunque tu voglia chiamare il valore del campo compilato, usa questo:</p><pre><code>&lt;?php if($extrafields[id\_number\_of\_field]!=''):?&gt; &lt;!-- if filled in, then call data --&gt; &lt;?php echo $extrafields[id\_number\_of\_field];?&gt; &lt;!-- actual data call --&gt; &lt;?php endif; ?&gt; </code></pre><p>tag.php funziona in modo leggermente diverso, così come i moduli k2.</p><p>tag.php - non è necessario il codice aggiuntivo in testa, quanto segue chiamerà i dati del campo.</p><pre><code>&lt;?php $extrafields = json\_decode($item-&gt;extra\_fields);?&gt; &lt;?php foreach($extrafields as $key=&gt;$value): ?&gt; &lt;?php if($extrafields[$key]-&gt;id == 'id\_number\_of\_field'&amp;&amp;$extrafields[$key]-&gt;value!=''): ?&gt; &lt;?php echo $extrafields[$key]-&gt;value; ?&gt;, &lt;?php endif; ?&gt; &lt;?php endforeach; ?&gt; </code></pre><p>ancora una volta, con module\_k2\_content, non è necessaria la prima chiamata di dati. ottieni i dati sul campo in questo modo:</p><pre><code>&lt;?php echo $item-&gt;extrafields-&gt;alias\_of\_field-&gt;value ;?&gt; </code></pre><p>spero che sia d'aiuto.</p> Avrai davvero bisogno di un [parser HTML](https://stackoverflow.com/questions/100358/looking-for-c-html-parser) per questo mizzega, non è semplice, sai programmare?
comunque ti consiglio inizia a prepararti le pagine con le informazioni, le prime, poi creati il motore di ricerca e prova il tutto, se funziona prova a crearti un installer, comunque sara mooolto pesante e dura, altrimenti prova con excel È necessario eseguire un po 'di interoperabilità Win32 per ottenere questo effetto. A seconda che tu stia utilizzando Winforms o WPF, il modo in cui ti colleghi all'elaborazione dei messaggi è diverso (non ricordo Winforms, quindi fornirò tutti gli esempi per WPF). Ma in entrambi i casi, è necessario:


1. Intercettare la creazione della finestra e modificare gli stili di finestra e gli stili estesi. In WPF è necessario ereditare da [`HwndSource`](https://msdn.microsoft.com/en-us/library/system.windows.interop.hwndsource.aspx) e modificare lo [`HwndSourceParameters`](https://msdn.microsoft.com/en-us/library/system.windows.interop.hwndsourceparameters.aspx) per raggiungere questo obiettivo. Sono necessari WS\_OVERLAPPEDWINDOW, WS\_CLIPSIBLINGS e WS\_VISIBLE per gli stili estesi stile standard e WS\_EX\_WINDOWEDGE e WS\_EX\_APPWINDOW.
2. Aggiungere un gestore di messaggi tramite i parametri HwndSource HwndSourceHook.
3. Nel proc messaggio aggiunto attraverso il gancio nella fase due, è necessario elaborare diversi messaggi:


	* [`WM_NCACTIVATE`](https://msdn.microsoft.com/en-us/library/ms632633(VS.85).aspx) - per cambiare il quadro del titolo quando l'applicazione è attiva o meno
	* [`WM_NCCALCSIZE`](https://msdn.microsoft.com/en-us/library/ms632634(VS.85).aspx) - per tornare al sistema operativo che non si dispone di aree non-client
	* [`WM_NCPAINT`](https://msdn.microsoft.com/en-us/library/dd145212(VS.85).aspx) - in generale, è necessario invaldate rECT finestra solo qui, il WPF si prenderà cura della pittura reale)
	* [`WM_NCHITTEST`](https://msdn.microsoft.com/en-us/library/ms645618(VS.85).aspx) - per elaborare lo spostamento della finestra, riducendo al minimo e massimizzando.
4. Una volta eseguito quanto sopra, l'area client in cui WPF sta per dipingere l'albero visivo coprirà l'intera area della finestra. Sarà necessario aggiungere le immagini "non-cliet" in modo che l'applicazione assomigli a un'applicazione normale per l'utente.
5. Potrebbe essere necessario molti più messaggi:


	* [`WM_THEMECHANGED`](https://msdn.microsoft.com/en-us/ms632650.aspx) se si desidera modificare il "non-client" pittura zona di essere coerente con il tema del sistema operativo
	* [`WM_DWMCOMPOSITIONCHANGED`](https://msdn.microsoft.com/en-us/library/aa969230(VS.85).aspx) se si desidera estendere vetro e ottenere la verniciatura a vetro standard OS OS quando il vetro è abilitato e passare alla logica personalizzata quando il vetro non lo è.
6. Si potrebbe desiderare di guardare le API Win32 a tema se si vuole andare a prendere i beni Win32 standard per le frontiere, caption, stretta, mininmize e massimizzare i pulsanti da utilizzare nel settore 'non-client".
7. Se si desidera estendere Glass nella finestra, si può guardare:


	* [`DwmExtendFrameIntoClientArea`](https://msdn.microsoft.com/en-us/library/aa969512(VS.85).aspx) - per ottenere il vetro standard NC-zona
	* [`DwmDefWindowProc`](https://msdn.microsoft.com/en-us/library/aa969507(VS.85).aspx) - per ottenere il desktop manager per dipingere Vetro e i comandi NC standard
	* [`DwmIsCompositionEnabled`](https://msdn.microsoft.com/en-us/library/aa969518.aspx) - per determinare se Glass è abilitato; puoi utilizzare le due API precedenti solo quando Glass è abilitato. Se Glass non è abilitato, è necessario eseguire il proprio disegno dell'area NC.


Si possono trovare delle definizioni appropriate C# di tutti i messaggi, stili e corrispondenti API Win32 che vi serve sul [P/Invoke](http://pinvoke.net).


È inoltre possibile ottenere risultati simili utilizzando la finestra standard WPF con `WindowStyle=none`. Tuttavia, ci saranno alcune differenze tra il comportamento del desktop verso la tua app e altre app; il più ovvio è che non sarà possibile impilare o affiancare la finestra facendo clic con il tasto destro sulla barra delle applicazioni.


È anche possibile esaminare alcuni componenti di terze parti che abilitano alcune di queste funzionalità. Non ne ho usato nessuno (come potete vedere, non ho paura dell'interop di Win32 :-)), quindi non posso raccomandarvi alcun particolare. non si può fare in html, dovrai impararti il php come minimo (codice che io consiglio vivamente). <p>fallo con <a href="https://docs.joomla.org/sql\_form\_field\_type">tipo di campo modulo sql</a> </p><pre><code>&lt;field name="parent" type="sql" label="select parent" query="select id, name from `#\_\_records` where `parent`='0'" key\_field="id" value\_field="name"&gt; &lt;option value=""&gt;please select parent&lt;/option&gt; &lt;/field&gt; </code></pre><p>oppure <a href="https://docs.joomla.org/creating\_a\_custom\_form\_field\_type">creare un tipo di campo modulo personalizzato</a> .</p><p>con il campo modulo personalizzato, puoi mostrare i bambini sotto i genitori, come la categoria seleziona ecc. ti dà maggiore flessibilità.</p><p>sembra che tu stia facendo una cosa tipo di categoria. in tal caso, è necessario utilizzare il gestore di categorie integrato. vedi <a href="https://docs.joomla.org/j3.x:developing\_a\_mvc\_component/adding\_categories">joomla! documenti: sviluppo di un componente mvc/aggiunta di categorie</a> su come aggiungere categorie al componente personalizzato.</p> ciao,
  

  
converti la mail in pdf tramite [PDF Creator](https://it.ccm.net/download/scaricare-33-pdfcreator) poi salva il file sulla chiavetta È possibile utilizzare [DataAdapter.FillSchema](http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.fillschema.aspx) . <p>gli elementi con attributo disabilitato non vengono inviati o puoi dire che i loro valori non sono pubblicati (vedi il secondo punto elenco sotto il passaggio 3 in <a href="https://www.w3.org/tr/html5/forms.html#constructing-the-form-data-set">le specifiche per costruire il set di dati del modulo</a> ).</p><p>vale a dire,</p><pre><code>&lt;input type="textbox" name="percentage" value="100" disabled="disabled" /&gt; </code></pre><p>cordiali saluti,</p><ol> <li>i controlli disabilitati non ricevono lo stato attivo.</li> <li>i controlli disabilitati vengono saltati nella navigazione a schede.</li> <li>i controlli disabilitati non possono essere pubblicati correttamente.</li> </ol><p>puoi utilizzare l'attributo <code>readonly</code> nel tuo caso, in questo modo sarai in grado di pubblicare i dati del tuo campo.</p><p>vale a dire,</p><pre><code>&lt;input type="textbox" name="percentage" value="100" readonly="readonly" /&gt; </code></pre><p>cordiali saluti,</p><ol> <li>gli elementi di sola lettura ricevono il focus ma non possono essere modificati dall'utente.</li> <li>gli elementi di sola lettura sono inclusi nella navigazione a schede.</li> <li>gli elementi di sola lettura vengono pubblicati correttamente.</li> </ol>