|
|
|
|
| Zitat von Gori
[b]Tag,
ich acker grad mein Script um. Dazu steck ich meine Sprachdateien in xml und möchte die gern per Dom dann auslesen.
|
Code: |
$doc = DOMDocument::load('languages/german.xml');
$xpath = new DOMXPath($doc);
foreach ($xpath->query('language/listings/todo/heading') as $heading)
{
echo $heading->nodeValue;
}
|
|
| |
Der XPath müsste afaik mit / anfangen, falls du vom Root ausgehts.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Meister Zopf am 24.09.2006 20:47]
|
|
|
|
|
|
| Zitat von Meister Zopf
Der XPath müsste afaik mit / anfangen, falls du vom Root ausgehts. | |
könntest du bitte wenigstens den Thread lesen bevor du irgendwelche sinnlose Kacke hier spamst?
|
|
|
|
|
|
|
Das geht auch freundlicher zu sagen, Herr Netbeater.
|
|
|
|
|
|
|
Ok back to my problem please
|
|
|
|
|
|
|
| Zitat von Gori
So, habe ein neues Problem.
Ich lade eine statische XML-Datei in mein DomDoc.
Jetzt möchte ich aber einer bestimmten Node ein Attribut geben.
|
Code: |
<languages>
<german>Deutsch</german>
<english>English</english>
</languages>
|
|
Soll verändert werden in:
|
Code: |
<languages>
<german selected="1">Deutsch</german>
<english>English</english>
</languages>
|
|
Ich muss die Node sicher selecten mit getElementsByTagName und dann mit setAttribute das Attribut einfügen, aber ich krieg das einfach nicht gebacken | |
was genau geht denn an der Version nicht? Bekommst du die Node erst garnicht mit getElementsByTagName() oder funktioniert setAttribute nicht oder funktioniert scheinbar alles nur dass du am Ende kein entsprechendens Attribut im XML hast?
Ich hab hier leider keine Moeglichkeit es zu testen, sieht aber prinzipiell richtig aus. Wenn du das am Ende in deinem XML haben willst, musst du das DomDocument natuerlich wieder speichern.
|
|
|
|
|
|
|
code wär cool
|
|
|
|
|
|
|
uahh, habs etwas schleifen lassen und arbeite an einer anderen lösung als bisher.
dazu müsste ich wissen wie ich 2 Strings mit xpath vergleiche
habe also 2 Nodes wo das gleiche drinn steht und mit xsl:when test="blbla" abfrage, geht das irgendwie?
Denn xsl:when test="node1=node2" geht nischt
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Gori am 17.10.2006 15:06]
|
|
|
|
|
|
| Zitat von Gori
Peacemaker, wo is dein Konzept? | | *wart*
Oder habt ihr das schon "Privat" geregelt?
|
|
|
|
|
|
|
nop, bisher net
|
Code: |
<select class="select" name="Sys_Language">
<xsl:for-each select="language/options/generalSettings/languages/language">
<xsl:choose>
<xsl:when test="current() = ../../../../../system/sys_language">
<option selected="selected">
<xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute>1<xsl:value-of select="."/>
</option>
</xsl:when>
<xsl:otherwise>
<option>
<xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute>2<xsl:value-of select="."/>
</option>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</select> |
|
|
[Dieser Beitrag wurde 5 mal editiert; zum letzten Mal von Gori am 17.10.2006 16:18]
|
|
|
|
|
|
| Zitat von Netbeater
| Zitat von Meister Zopf
Der XPath müsste afaik mit / anfangen, falls du vom Root ausgehts. | |
könntest du bitte wenigstens den Thread lesen bevor du irgendwelche sinnlose Kacke hier spamst? | |
Genau das war der Fehler den er gemacht hat du Gehirngünther.
|
|
|
|
|
|
|
| Zitat von Meister Zopf
| Zitat von Netbeater
| Zitat von Meister Zopf
Der XPath müsste afaik mit / anfangen, falls du vom Root ausgehts. | |
könntest du bitte wenigstens den Thread lesen bevor du irgendwelche sinnlose Kacke hier spamst? | |
Genau das war der Fehler den er gemacht hat du Gehirngünther. | |
Ja, nur ging es zu dem Zeitpunkt um etwas komplett anderes und wenn du den Thread gelesen hättest, wüsstest du das.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Netbeater am 17.10.2006 20:40]
|
|
|
|
|
|
Jo stimmt. Aber wenn ich zu faul bin den Thread zu lesen, ist es wohl besser, die Antwort steht doppelt drinn als gar nicht.
|
|
|
|
|
|
|
Habs inzwischen
|
|
|
|
|
|
|
So, nächstes Problem:
Ich habe versucht meiner XML-Klasse eine Funktion zu spendieren die ein XML-File oder String an eine Node anhängt.
Ich bin da auf eine kleine Schwierigkeit gestossen und zwar wie ich eine eindeutige Node selecte.
Beispiel:
|
Code: |
<project>
<lala>
<project>Thor</project>
</lala>
</project>
|
|
Mit meiner Funktion kriege ich project und lala selektiert, aber das project in lala kriege ich nicht.
Kann ich bei getElementsByTagName irgendwie auch XPath selecten?
Meine Funktion:
|
Code: |
public function appendToNode($xmlNode, $xml, $loadFromFile)
{
if ($loadFromFile)
{
$loadedXML = DOMDocument::load($xml);
}
else
{
$loadedXML = DOMDocument::loadXML($xml);
}
$node = $this->dom->getElementsByTagName($xmlNode)->item(0);
$node->appendChild($this->dom->importNode($loadedXML->getElementsByTagName('*')->item(0), true));
} |
|
Der Aufruf:
|
Code: |
$this->xmlHandler->appendToNode('project', '<test>test</test>', 'test', 0);
|
|
|
[Dieser Beitrag wurde 4 mal editiert; zum letzten Mal von Gori am 23.10.2006 14:56]
|
|
|
|
|
|
Ich poste hier mal ganz dreist rein, weil ich mein eigenes Problem mit DOM+XUL hab.
Erstelle ich meine Tabelle dynamisch mittels javascript + createElement("td/tr/..."), dann werden alle Zeilen nebeneinander dargestellt statt untereinander.
Wenn ich aber meine dynamisch generierte Tabelle aus dem DOM Inspector in meine html/xul reinpaste und die Seite lade, ist plötzlich alles in Ordnung.
Also:
- dynamische Tabelle statisch in der xul: okay
- dynamische Tabelle dynamisch in der xul: Reihen nebeneinander
Was soll das?
|
|
|
|
|
|
|
wird das wirklich in dieser Reihenfolge geschrieben:
createElement("td/tr/...")
und nicht
createElement("tr/td/...") ?
|
|
|
|
|
|
|
| Zitat von FoxHunter
Ich poste hier mal ganz dreist rein, weil ich mein eigenes Problem mit DOM+XUL hab.
Erstelle ich meine Tabelle dynamisch mittels javascript + createElement("td/tr/..."), dann werden alle Zeilen nebeneinander dargestellt statt untereinander.
Wenn ich aber meine dynamisch generierte Tabelle aus dem DOM Inspector in meine html/xul reinpaste und die Seite lade, ist plötzlich alles in Ordnung.
Also:
- dynamische Tabelle statisch in der xul: okay
- dynamische Tabelle dynamisch in der xul: Reihen nebeneinander
Was soll das? | |
benutzt du den Firebug? Schau dir mal das erzeugte XHTML an. Ansonsten installier dir den Firebug!
|
|
|
|
|
|
|
Habs, createElementNS() statt createElement()
Schließlich ist es in XUL ja <html:tr> statt <tr>, allerdings wollte er noch die Deklaration dabeihaben.
|
|
|
|
|
|
|
Also niemand ne Idee?
|
|
|
|
|
|
Thema: DomDocument und XML ( Häää? Wie gehtn das? ) |