PHP 无效字符错误

2024-02-23

运行此代码时我收到此错误:Fatal error: Uncaught exception 'DOMException' with message 'Invalid Character Error' in test.php:29 Stack trace: #0 test.php(29): DOMDocument->createElement('1OhmStable', 'a') #1 {main} thrown in test.php on line 29

原始 XML 文件中的节点确实包含无效字符,但当我从节点中剥离无效字符时,应该创建节点。我需要对原始 XML 文档进行什么类型的编码?我需要解码 saveXML 吗?

function __cleanData($c) 
{
    return preg_replace("/[^A-Za-z0-9]/", "",$c);
}
$xml = new DOMDocument('1.0', 'UTF-8');
$xml->load('test.xml');    
$xml->formatOutput = true; 

$append = array();
foreach ($xml->getElementsByTagName('product') as $product ) 
    {
        foreach($product->getElementsByTagName('name') as $name ) 
        {

            $append[] = $name;
        }
                foreach ($append as $a)  
                {
                    $nodeName = __cleanData($a->textContent);

                        $element = $xml->createElement(htmlentities($nodeName) , 'a');
                }
        $product->removeChild($xml->getElementsByTagName('details')->item(0));
        $product->appendChild($element);
    }

$result = $xml->saveXML();
$file = "data.xml";
file_put_contents($file,$result);

原始 XML 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/v1/xsl/xml_pretty_printer.xsl" type="text/xsl"?>
<products>
<product>
<modelNumber>M100</modelNumber>
<itemId>1553725</itemId>
<details>
  <detail>
    <name>1 Ohm Stable</name>
    <value>600 x 1</value>
  </detail>
 </details>
</product>
 </products>

新文档应该如下所示:

 <?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/v1/xsl/xml_pretty_printer.xsl" type="text/xsl"?>
<products>
<product>
<modelNumber>M100</modelNumber>
<itemId>1553725</itemId>
  <1 Ohm Stable>

  </1 Ohm Stable>

  </product>
 </products>

简单地说,您不能使用以数字开头的元素名称

1OhmStable  <-- rename this
_1OhmStable <-- this is fine

php 解析 xml - 错误:StartTag:元素名称无效 https://stackoverflow.com/questions/6588888/php-parse-xml-error-starttag-invalid-element-name

一篇不错的文章:-http://www.xml.com/pub/a/2001/07/25/namingparts.html http://www.xml.com/pub/a/2001/07/25/namingparts.html

名称是以字母或几个标点字符之一开头的标记,并以字母、数字、连字符、下划线、冒号或句号继续,统称为名称字符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 无效字符错误 的相关文章

  • PHPUnit:当将类型作为第二个参数作为非字符串传递时,assertInstanceOf() 不起作用

    我需要检查变量是否是User type User是我的班级 user我的对象 this gt assertInstanceOf user User 这是行不通的 我有以下错误 use of undefined constant User a
  • 在 vbscript 中将子条目添加到 xml 文件中的特定节点

    我有一个包含此条目的 xml 文件 DataConfiguration xml
  • 禁用 php 文件缓存以进行调试

    我有一个安装了 zpanel 和 apache2 php mysql 的 vps 我正在为 php 网站开发一个小型后端 对于准备发布的网站来说情况是完美的 但现在我需要禁用缓存 php 文件的服务器功能以立即测试我的 php 文件的正确性
  • groovy.xml.MarkupBuilder 禁用 PrettyPrint

    我正在使用 groovy xml MarkupBuilder 创建 XML 响应 但它创建了生产中不需要的漂亮打印结果 def writer new StringWriter def xml new MarkupBuilder writer
  • android php 连接错误? (添加java代码)

    我试图从 android 应用程序获取位置 纬度 经度 并使用 php 插入数据库 然后提取 10m 半径内的数据 问题是 当我使用智能手机测试代码时 本地测试正常 数据未正确插入 表 usergps 有 3 列 名称 纬度 经度 在我测试
  • PHP - 简单嵌套无序列表 (UL) 数组

    我在 stackoverflow 上看到了这个嵌套 UL 数组问题的一些变体 但我认为我的比其他问题更简单 我正在寻找一个简单的数组循环 它允许无限量的主题 父项 和无限量的项目 子项 例如 ul li Topic li ul li Ite
  • 为什么要使用 XML 解析器?

    I m a somewhat经验丰富的 PHP 脚本编写者 但是我只是专注于解析 XML 和所有这些好东西 我似乎无法理解为什么人们会使用单独的 XML 解析器而不是仅仅使用explode函数 看起来就这么简单 这是我一直在做的事情 假设路
  • PHP“按引用分配”的奇怪现象

    我发现了一个代码片段 其中包括 a b 但没有测试 b 是否确实存在 if isset b 我不确定 PHP 是如何处理这个问题的 所以我进行了一个快速的裸测试 现在我更加感兴趣了 a array a gt b x gt y b array
  • 有没有好的php库可以将html/php文档转换为对象

    我看到很多可以解析 html 的 php 库 一个很好的例子是查询路径 http querypath org 它模仿 Jquery Api 不过 我想分析一下phtml 因此 该库不仅擅长分析 DOM 而且还擅长分析php处理指令 http
  • php登录会话登录变量

    我正在学习 php 并已报名参加课程 我的用户登录信息显示如下 我的问题是登录时是否必须在会话中选择我想要的所有字段 我不能只使用 选择电子邮件 并按此拉出所有行 或者我必须在登录时选择所有行吗 例如 将该 uid uid 用于该会话 它是
  • E4X 选择后代可以是 A OR B 或 A && B 的节点

    所以我有这个 XML 结构
  • 可绘制 Android 上的颜色叠加

    我一直在这里关注这个教程中 对角线切割视图 https cdn images 1 medium com max 800 1 IIPRX4i4cOAdxAMeGpY92w png获得对角线视图效果
  • Magento 开源 2.3 - CSS 和 JS 未加载

    I installed Magento 2 3 successfully but when type http localhost Magento2 http localhost Magento2 I get a blank page li
  • 如何在 dompdf 库上启用调试?

    我正在使用 dompdf 库来输出一些报告 我得到了一个文件输出 但我有一些奇怪的行为 如何启用调试报告dompdf https github com dompdf dompdf dompdf new Dompdf something li
  • Magento - 将媒体库属性添加到产品平板中

    如何将 media gallery 属性类型添加到产品平面表中 以便可以在产品列表中使用它 可以通过将 用于产品列表 定义为 是 来添加它们 完成此操作后 您将需要重新索引产品平面 编辑 请参阅解决方案以获取最终答案 Source 我可以向
  • 在 MySQL 数据库中存储大文件的更好方法?

    我有一个 PHP 脚本 您可以使用它上传非常大的文件 最大 500MB 并且该文件的内容存储在 MySQL 数据库中 目前我做这样的事情 mysql query INSERT INTO table VALUES uploadedfile f
  • 数组初始化中的正确缩进,PDT/Zend Studio

    我在代码中使用以下样式的数组初始化 a array one gt 123 two gt 456 但在这种情况下 PDT Zend Studio 无法正常工作 按 Return 键后 它将光标置于 a 下方 在我的示例中 并忽略缩进 如果数组
  • UNION SELECT - 循环?还是单个查询?

    如果我使用 UNION 从数据库中进行多个 SELECT 是否被视为一个查询 或多个查询 SELECT column name s FROM table1 UNION SELECT column name s FROM table2 这是否
  • 如何获得DiVs等级?

    html div class div class p strong span style color FF0000 Content1 span strong p p style text align center Content2 img
  • PHP 中的金字塔星号

    请看我的代码 for row var row gt 1 row for j 0 j lt row j echo echo echo nbsp Output 但我需要输出如下 您可能想查看一些字符串函数

随机推荐

  • 为什么函数调用称为“函数调用”?

    我知道什么是函数调用 我知道它的作用 我已经调试了很多了 我有some凭直觉理解为什么使用术语 函数调用 是有意义的 但归根结底 我无法像使用 函数调用 那样正确解释这一点return陈述 例如 用return陈述答案是 叫做 回归 因为你
  • 如何通过“合并前需要拉取请求审查”来保护分支

    我已将其发布在 github community 上 但尚未得出任何解决方案 我试图保护主分支免受单人直接推送的影响 每个更改都必须通过 功能 分支进行 然后通过拉取请求得到另一个 或特定 开发人员的批准 在存储库的设置中 此功能似乎可以执
  • tf.data.Iterator.get_next():如何在tf.while_loop中前进?

    目前 我尝试在 Tensorflow while 循环中实现所有训练 但我在使用 Tensorflow 数据集 API 的迭代器时遇到了问题 通常 当调用 sess run 时 Iterator get next 前进到下一个元素 但是 我
  • 使用 Dozer 的自定义转换器将对象列表映射到另一个列表

    我想做的是使用 Dozer 将实体列表映射到它们的字符串 ID 列表 或多或少 显然 它意味着自定义转换器 我的第一个想法是创建一个从 MyEntity 到 String 的转换器 然后对 Dozer 说 使用此转换器映射此集合的每个对象
  • 获取 foreach 中先前的数组值

    我的数组 arr array jan feb mar apr mei jun jul agu sep okt nov des 然后我做了一个 foreach foreach arr as ar echo ar 这会将 jan 输出到 des
  • Oracle 中的并发更新:锁定与否?

    我很困惑 我正在阅读有关 Oracle 中的 MVCC 的内容 我以为MVCC意味着没有锁 但是 我在其他地方读到这一切UPDATE无论隔离级别如何 都会执行自动锁定 有人可以解释一下 Oracle 更新期间会发生什么吗 当多个已提交读事务
  • Mfc CComboBoxEx - 如何更改背景颜色

    我有一个派生自 CComboBoxEx 的类 我正在尝试更改背景颜色 我认为它会像 ComboBox 一样工作 使用 SetBkColor 函数 但它不会改变背景颜色 这是我尝试过的 BEGIN MESSAGE MAP CMyComboBo
  • svn:转储格式文档?

    svnadmin dump 格式是否记录在某处 我想记录一个包含 svn 存储库所有元数据的数据结构 除了文件内容本身之外 它基本上与 转储 文件中的内容相同 似乎 svnkit 库会有它 或者有办法以编程方式获取此元数据 但我在过去的一个
  • 单击引导按钮显示默认颜色

    我正在尝试使用下面的代码设置按钮颜色的样式 颜色在我单击按钮之前一直有效 按钮显示默认颜色 如何指定按钮 onclick 的颜色 btn success color ffffff background color 161617 border
  • 当目标是对象时,JSON.net 将 json 数组序列化为 JArray。我怎样才能改变这一点?

    我有一个单级 json 我想将其反序列化为Dictionary
  • C++ - 类函数内数组的长度[重复]

    这个问题在这里已经有答案了 我知道有几个线程问类似的问题 但我找不到解决方案 而且我对 C 有点陌生 我想计算 DWORD 数组的长度 所以它只是一个无符号长整型 DWORD offsets 0x378 0x14 0x0 这是我的函数的标头
  • 获取 SDWebImage 缓存图像

    我想问一下SDWebImageManager下载后如何获取下载的图像 我只有通过 URL 下载它的代码 这就是我得到的 let manager SDWebImageManager SDWebImageManager sharedManage
  • 如果浏览器选项卡处于非活动状态,则 SignalR 连接超时

    如果我保持浏览器选项卡处于活动状态 至少每 5 6 分钟打开一次 我的 WebSocket 连接会通过 ping 请求保持活动状态 请参阅随附的屏幕截图 但是 如果我放弃该选项卡 10 分钟左右 ping 请求就会停止发生 WebSocke
  • 存储和编辑 Java EE 应用程序的配置

    UPDATE 请参阅我关于此主题的博客文章大约一年后撰写 http blog ringerc id au 2012 07 java ee 7 needs improvements in app html http blog ringerc
  • 如何在 Django 中的 URL 中传递 kwargs

    在 django 文档中 url 函数是这样的 url regex view kwargs None name None prefix 我有这个 url r download template P
  • Hibernate 数据库加密对应用程序完全透明

    我正在开发一个 Grails 1 0 4 项目 该项目将在不到 2 周的时间内发布 客户刚刚提出了一个要求 即数据库中的所有数据都应该加密 由于对应用程序本身中的每个数据库访问进行加密可能会花费大量时间并且容易出错 因此我寻求的解决方案是某
  • 在内部存储上播放文件时 MediaPlayer 错误-2147483648

    我正在使用android com 上的音频捕获示例 http developer android com guide topics media index html在实际设备上录制和播放音频 摩托罗拉触摸板和三星 Galaxy S 当我将音
  • 使用 Android 设计支持库从右到左导航抽屉菜单

    我正在使用 android 设计支持库 我想知道如何拥有从右到左的导航抽屉 我将重力设置为右侧 但只有导航抽屉本身移动到右侧 我想知道如何将右侧的菜单项 导航视图
  • 我无法使用 PowerShell 和 Selenium 模块启动 chrome instant

    我不确定我缺少什么 但我在 PowerShell 7 1 下安装了 Selenium 模块 但无法启动 chrome 实例 我按照以下步骤操作 从https github com adamdriscoll selenium powershe
  • PHP 无效字符错误

    运行此代码时我收到此错误 Fatal error Uncaught exception DOMException with message Invalid Character Error in test php 29 Stack trace