SimpleXML 解析xml 假设xml没有声明encoding默认使用utf-8进行解码。终于得到的数据编码为utf-8格式。

我猜想它内部实现了iconv(encoding=’utf-8’, ‘utf-8’,str); 所以当xml中存在中文,可是xml没有声明encoding = ‘gbk’ 会报错误。



testxml.xml文件例如以下

<?xml version="1.0" encoding="utf-8"?>
<languages>
<lang name="C">
<appeared>1972</appeared>
<creator>Dennis Ritchie</creator>
</lang>
<lang name="PHP">
<appeared>1995</appeared>
<creator>Rasmus Lerdorf</creator>
</lang>
<lang name="Java">
<appeared>1995</appeared>
<creator>James Gosling</creator>
</lang>
</languages>

<?php
/*获取xml对象*/
$xmlobj = simplexml_load_file('testxml.xml');
//var_dump($xmlobj); /*获取元素节点 返回XML对象*/
$appeared = $xmlobj->lang[0]->appeared;
$creator = $xmlobj->lang[0]->creator;
//var_dump($appeared,$creator); /*获取元素的名称 返回字符串*/
$rootName = $xmlobj->getName();
//var_dump($rootName); /*属性节点訪问 foreach遍历xml节点*/
foreach($xmlobj->lang as $lang){
printf("<p>%s appeared in %d and was created by %s.</p>",
$lang['name'],
$lang->appeared,
$lang->creator);
}
? >

textxml2.xml文件例如以下:

<?

xml version="1.0" encoding="utf-8"?>
<languages
xmlns:dc="http://purl.org/dc/elements/1.1/">
<lang name="C">
<appeared>1972</appeared>
<dc:creator>Dennis Ritchie</dc:creator>
</lang>
<lang name="PHP">
<appeared>1995</appeared>
<dc:creator>Rasmus Lerdorf</dc:creator>
</lang>
<lang name="Java">
<appeared>1995</appeared>
<dc:creator>James Gosling</dc:creator>
</lang>
</languages>

<?

php
$ncxmlobj = simplexml_load_file('testxml2.xml'); /*获取命名空间下的节点 */
$nc = $ncxmlobj ->lang[0]->children('http://purl.org/dc/elements/1.1/');
$ncreator = $nc->creator;
//var_dump($ncreator); /*获取命名空间 获取节点下属于nc的节点*/
$nc = $ncxmlobj -> getNamespaces(TRUE);
$dc = $ncxmlobj ->lang[0]->children($nc['dc']);
//var_dump($dc->creator);
?>

兼容的比較lower


<? php
$xml = file_get_contents($url);
foreach($http_response_header as $header){
if(preg_match('#Content-Type(.*)charset=(.*)#i',$header,$match)){
switch(strtolower($match[2])){
case 'utf-8':
break;
case 'iso-8859-1':
$xml = utf8_encode($xml); //Encodes an ISO-8859-1 string to UTF-8
break;
default:
$xml = iconv($m[1], 'utf-8', $xml);
}
break;
}
}
simplexml_load_string($xml);
? >

PHP-xml-1的更多相关文章

  1. XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法

            在前几天的一个项目中,由于数据库字段的命名原因 其中有两项:一项叫做"市场价格"一项叫做"商店价格" 为了便于区分,遂分别将其命名为market ...

  2. .NET Core采用的全新配置系统[9]: 为什么针对XML的支持不够好?如何改进?

    物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON.XML和INI,对应的配置源类型分别是JsonConfigurationSource.XmlConfigura ...

  3. WebApi接口 - 响应输出xml和json

    格式化数据这东西,主要看需要的运用场景,今天和大家分享的是webapi格式化数据,这里面的例子主要是输出json和xml的格式数据,测试用例很接近实际常用情况:希望大家喜欢,也希望各位多多扫码支持和点 ...

  4. XML技术之DOM4J解析器

    由于DOM技术的解析,存在很多缺陷,比如内存溢出,解析速度慢等问题,所以就出现了DOM4J解析技术,DOM4J技术的出现大大改进了DOM解析技术的缺陷. 使用DOM4J技术解析XML文件的步骤? pu ...

  5. UWP开发之Mvvmlight实践六:MissingMetadataException解决办法(.Net Native下Default.rd.xml配置问题)

    最近完成一款UWP应用,在手机端测试发布版(Release)的时候应用莫名奇妙的强行关闭,而同样的应用包在PC端一点问题都没有,而且Debug版在两个平台都没有问题,唯独手机的Release版有问题. ...

  6. PHP中遍历XML之SimpleXML

    简单来讲述一些XML吧,XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言.XML是当今用于传输数据的两大工具之一,另外一个是json. 我们在PHP中使用XML也是用来传输数据, ...

  7. Asp.Net 操作XML文件的增删改查 利用GridView

    不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...

  8. Mybatis XML配置

    Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...

  9. Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

  10. C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”

    Q: 在反序列化 Xml 字符串为 Xml 对象时,抛出如下异常. 即在 XML文档(0, 0)中有一个错误:缺少根元素. A: 首先看下代码: StringBuilder sb = new Stri ...

随机推荐

  1. ajax+json+java

    1.首先下载json所以依赖的包, Json-lib 最新版 json-lib-2.3-jdk15.jar,其官方网站是:http://json-lib.sourceforge.net/可以直接dow ...

  2. Java程序员面试题集(136-150)(转)

    转:http://blog.csdn.net/jackfrued/article/details/17740651 Java程序员面试题集(136-150) 摘要:这一部分主要是数据结构和算法相关的面 ...

  3. UP UP UP!(dp)

    UP UP UP! Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 92  Solved: 27SubmitStatusWeb Board Descri ...

  4. 使用 Camtasia Recorder显示 “ camtasia an error occurred in the recorder: video codec open failed ”

    这是因为本机没有codec的缘故,可以下载一个:tscc解码器(TechSmith Screen Capture Codec) 2.0.3.0 安装版 http://www.cngr.cn/dir/2 ...

  5. hibernate报错:org.hibernate.MappingException: No Dialect mapping for JDBC type: -1

    解决方法:自定义一个Hibernate Dialect. package com.yourcompany.util ; import java.sql.Types; import org.hibern ...

  6. Sql中的Exists和in

    最近学习数据库的分页算法,提到第一种 SELECT TOP 页大小 *FROM table1WHERE id NOT IN          (          SELECT TOP 页大小*(页数 ...

  7. C#之回到了最初的起点----解决方案、项目、程序集、命名空间

    C#之回到了最初的起点----解决方案.项目.程序集.命名空间 ——Percy 初学者很容易把这些概念搞混淆.先说说项目(Project),通俗的说,一个项目可以就是你开发的一个软件.在.Net下,一 ...

  8. WindowsForm 流

    流 包括输入流代码 输出流代码 流: 输入流: string filename = openFileDialog1.FileName; //通过读入流进行文件读取 StreamReader sr = ...

  9. 预载入和JavaScript Image()对象

    预载入和JavaScript Image()对象 很多high-res图像真的可以使 Web 站点更加整洁.但是它们也会使站点的访问速度变慢——图像是文件,文件使用带宽,带宽直接与等待时间相关.是该了 ...

  10. javascript 高级程序设计学习笔记(面向对象的程序设计) 2

    在调用构造函数时会为实例添加一个指向最初原型的指针,我们可以随时为原型添加属性和方法,并且能在实例中体现出来,但如果是重新了原型对象,那就会切断构造函数与最初原型的联系. function Dog ( ...