PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Attributnamen mit xml_set_element_handler (http://www.selfphp.de/forum/showthread.php?t=26127)

miamiomc 04.05.2018 10:00:44

Attributnamen mit xml_set_element_handler
 
Hallo Gemeinde,

ich parse ein XML-Dokument mit dem Code:
PHP-Code:

<?php
$file 
"muster.xml";

function 
startElement($parser$name$attrs
{
        echo 
$name." | ";
        foreach(
$attrs as $attribute)
        {
            echo 
$attribute." >< ";
        }
    
#}
}

function 
endElement($parser$name
{
        echo 
$name;
}

function 
characterData($parser$data
{
    echo 
$data."<BR>";
}

$xml_parser xml_parser_create();
// use case-folding so we are sure to find the tag in $map_array
xml_parser_set_option($xml_parserXML_OPTION_CASE_FOLDINGtrue);
xml_set_element_handler($xml_parser"startElement""endElement");
xml_set_character_data_handler($xml_parser"characterData");
if (!(
$fp fopen($file"r"))) {
    die(
"could not open XML input");
}

while (
$data fread($fp4096)) {
    if (!
xml_parse($xml_parser$datafeof($fp))) {
        die(
sprintf("XML error: %s at line %d",
                    
xml_error_string(xml_get_error_code($xml_parser)),
                    
xml_get_current_line_number($xml_parser)));
    }
}
xml_parser_free($xml_parser);
?>

Dabei benötige ich nur den Wert des Attributes sondern auch den Namen. Weiß jemand was zu tun ist. in der PHP-Dokumentation habe ich nichts gefunden.

Die XML-Datei:

HTML-Code:

<?xml version="1.0" encoding="utf-8"?>
<SessionData SchemaVersion="2.0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Header>
<SessionInfo StartTime="2018-03-02T11:34:37.8546418+01:00" EndTime="2018-03-02T12:27:30.6375104+01:00">
<SessionIdent>cb02b40a-5c5d-43f3-b88f-45a3b32dc321</SessionIdent>
<AnalysisRelevance>true</AnalysisRelevance>
</SessionInfo>
<System>
<SystemVersion>12.09.33.21392</SystemVersion>
<LanguageGui DataVersion="12.09.30">de-DE</LanguageGui>
<LanguageMarket DataVersion="12.09.30">de-DE</LanguageMarket>
<OSVersion>Microsoft Windows NT 6.2.9200.0</OSVersion>
<OSTyp>64 Bit</OSTyp>
</System>
</Header>
<Protocol StartTime="2018-03-02T11:34:50.0963529+01:00" EndTime="2018-03-02T12:27:30.6375104+01:00">
<Event StartTime="2018-03-02T11:34:56.6523167+01:00" LayoutGroup="X">
<WerteAlert UpperThreshold="12.55" ActualLevel="13.44" LowerThreshold="14.85" Severity="Ok" />
</Event>
<TestModule Result="Normal" CollectiveResult="Ok" Source="Whatever" StartTime="2018-03-02T11:35:14.416585+01:00" EndTime="2018-03-02T11:35:15.4271447+01:00" Identifier="EIGENER" WithGUI="false" LayoutGroup="D">
<Title Language="de-DE">Ablauf 1</Title>
<ModuleStep StartTime="2018-03-02T11:35:14.6147091+01:00" EndTime="2018-03-02T11:35:14.6167105+01:00" Title="Vorbereiten" />
<ModuleStep StartTime="2018-03-02T11:35:14.6167105+01:00" EndTime="2018-03-02T11:35:14.6177124+01:00" Title="Starten" />
<ModuleStep StartTime="2018-03-02T11:35:14.6217135+01:00" EndTime="2018-03-02T11:35:14.6217135+01:00" Title="Initialisierung" />
<ModuleStep StartTime="2018-03-02T11:35:14.6237154+01:00" EndTime="2018-03-02T11:35:15.2765198+01:00" Title="Merkmal">
<Action StartTime="2018-03-02T11:35:15.033013+01:00" EndTime="2018-03-02T11:35:15.1617295+01:00" Result="None" LayoutGroup="X">
<Gruppe1>
<Gruppe2>
<NameS>G_IIM</NameS>
<Address>0x63</Address>
</Gruppe2>
</Gruppe1>
</Action>
</ModuleStep>
</TestModule>
</Protocol>
</SessionData>


miamiomc 04.05.2018 11:35:44

AW: Attributnamen mit xml_set_element_handler
 
Problem gelöst, gerade hat mich ein Kollege darauf hingewiesen. Hier der Geänderte Code:
PHP-Code:

<?php
$file 
"muster.xml";

function 
startElement($parser$name$attrs
{
        echo 
$name." | ";
        foreach(
$attrs as $attribute => $value)
        {
            echo 
$attribute."=".$value;
        }
    
#}
}

function 
endElement($parser$name
{
        echo 
$name;
}

function 
characterData($parser$data
{
    echo 
$data."<BR>";
}

$xml_parser xml_parser_create();
// use case-folding so we are sure to find the tag in $map_array
xml_parser_set_option($xml_parserXML_OPTION_CASE_FOLDINGtrue);
xml_set_element_handler($xml_parser"startElement""endElement");
xml_set_character_data_handler($xml_parser"characterData");
if (!(
$fp fopen($file"r"))) {
    die(
"could not open XML input");
}

while (
$data fread($fp4096)) {
    if (!
xml_parse($xml_parser$datafeof($fp))) {
        die(
sprintf("XML error: %s at line %d",
                    
xml_error_string(xml_get_error_code($xml_parser)),
                    
xml_get_current_line_number($xml_parser)));
    }
}
xml_parser_free($xml_parser);
?>

Problem somit gelöst


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:22:38 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.