【问题标题】:PHP XML Parser - ignoring nested/child tagsPHP XML Parser - 忽略嵌套/子标签
【发布时间】:2009-05-08 10:51:11
【问题描述】:

我遇到了一种情况,我正在使用 XML 解析器从 php://input 中提取数据。

发送的数据如下:

<this>foo</this>
<that>bar></that>
<data><dong>zebras</dong><fong>monkeys</fong></data>

现在,问题在于处理程序:

$xml_parser = xml_parser_create();

xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);
xml_set_element_handler($xml_parser, "startTag", "endTag");
xml_set_character_data_handler($xml_parser, "contents");

$document = file_get_contents("php://input");                  

xml_parse($xml_parser, $document);

xml_parser_free($xml_parser);

...正在为我解释标签以破译内容以使其有用...它似乎缺少&lt;data&gt; 中的任何内容,即我需要找出如何让它忽略子/嵌套元素/tags,然后随便删除数据。

【问题讨论】:

    标签: php xml parsing


    【解决方案1】:

    WideDonkey,您是否考虑过使用 DOM 代替?你可以轻松做到:

    $dom = new DOMDocument();
    $dom->loadXML(file_get_contents('php://input'));
    
    $data = $dom->getElementsByTagName('data');
    $data = $data[0]->asXML();
    

    【讨论】:

      【解决方案2】:

      我最终做的是使用 SimpleXML 来做:-

      $xml = new SimpleXMLElement($input);
      
      $whatIwant = $xml->bar->monkeys
      

      您可以根据需要降低任意级别,例如测试

      $xml 是最远的包装标签。

      【讨论】:

        【解决方案3】:

        phpQuery 为您提供封装在 PHP shell 中的 jQuery 选择器的所有功能。

        phpQuery::newDocumentFileXHTML('my-xhtml.html')->find('p');
        

        【讨论】:

          【解决方案4】:

          我不确定我是否正确理解了这个问题,但是

          <?php
          function contents($parser, $data) {
            echo $data;
          }
          
          $xml_parser = xml_parser_create();
          xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);
          // xml_set_element_handler($xml_parser, "startTag", "endTag");
          xml_set_character_data_handler($xml_parser, "contents");
          // $document = file_get_contents("php://input");
          $document = '<x><this>foo</this><that>bar</that><data><dong>zebras</dong><fong>monkeys</fong></data></x>';
          xml_parse($xml_parser, $document);
          xml_parser_free($xml_parser);
          

          打印

          foobarzebrasmonkeys
          

          【讨论】:

          • 您好 Volkerk,感谢您的回复。我需要它来做它说 foobarzebrasmonkeys 即 insiden 所有内容都被打印,几乎作为来源,带有标签。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-02-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-23
          相关资源
          最近更新 更多