如何使用php DOM获取<![CDATA [values]]>中的值?

Hea*_*man 20 php xml

如何使用php DOM在<![CDATA [values]]>中获取值.这是我的xml中的一些代码.

     <Destinations>

        <Destination>
            <![CDATA[Aghia Paraskevi, Skiatos, Greece]]]]>><![CDATA[
            <CountryCode>GR</CountryCode>
        </Destination>

        <Destination>
            <![CDATA[Amettla, Spain]]]]>><![CDATA[
            <CountryCode>ES</CountryCode>
        </Destination>

        <Destination>
            <![CDATA[Amoliani, Greece]]]]>><![CDATA[
            <CountryCode>GR</CountryCode>
        </Destination>

        <Destination>
            <![CDATA[Boblingen,  Germany]]]]>><![CDATA[
            <CountryCode>DE</CountryCode>
        </Destination>

  </Destinations>
Run Code Online (Sandbox Code Playgroud)

Nic*_*ole 31

使用PHP DOM非常简单,与Javascript的DOM非常相似.

以下是重要的课程:

  • DOMNode - 可以在XML/HTML文档中遍历的任何内容的基类,包括文本节点,注释节点和 CDATA节点
  • DOMElement -标签的基类.
  • DOMDocument - 文档的基类.包含加载/保存XML的方法,以及普通的DOM文档方法(见下文).

有一些主要的方法和属性:

注意:您的CDATA部分格式错误.我不知道为什么]]第一个中有一个额外的,或者在行尾有一个未闭合的CDATA部分,但我认为它应该只是:

<![CDATA[Aghia Paraskevi, Skiatos, Greece]]>
Run Code Online (Sandbox Code Playgroud)

把这一切放在一起我们:

  1. 创建一个新的文档对象并加载XML
  2. Destination按标签名称获取所有元素并迭代列表
  3. 迭代每个Destination元素的所有子节点
  4. 检查节点类型是否为 XML_CDATA_SECTION_NODE
  5. 如果是,echotextContent那个节点.

码:

$doc = new DOMDocument();
$doc->load('test.xml');
$destinations = $doc->getElementsByTagName("Destination");
foreach ($destinations as $destination) {
    foreach($destination->childNodes as $child) {
        if ($child->nodeType == XML_CDATA_SECTION_NODE) {
            echo $child->textContent . "<br/>";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

Aghia Paraskevi,Skiatos,希腊
Amettla,西班牙 Amoliani,
希腊
Boblingen,德国


小智 10

用这个:

$parseFile = simplexml_load_file($myXML,'SimpleXMLElement', LIBXML_NOCDATA)
Run Code Online (Sandbox Code Playgroud)

和下一个:

foreach ($parseFile->yourNode as $node ){
etc...
}
Run Code Online (Sandbox Code Playgroud)


Ani*_*ngh 7

最好和简单的方法

$xml = simplexml_load_string($xmlData, 'SimpleXMLElement', LIBXML_NOCDATA);
$xmlJson = json_encode($xml);
$xmlArr = json_decode($xmlJson, 1); // Returns associative array
Run Code Online (Sandbox Code Playgroud)