我制作了一个解析 XML 文件的 PHP 脚本,当我尝试解析它时,出现错误:
2: DOMDocument::load(): 表示信息的命名空间前缀 edf 未在 /users/zzz/testing/meta.xml 中定义,行:2
我一直在寻找解决方案,但找不到任何解决方案,所以我在这里发布。正如你所看到的,我正在使用DOMDocument类。
我的解析 XML 的代码如下所示:
$dom = new DOMDocument();
$metaXML = $dom->load($path."/meta.xml");
Run Code Online (Sandbox Code Playgroud)
我确信路径和一切都是正确的。当我删除前缀时,它工作正常。XML 看起来像:
<meta>
<info gamemodes="race" type="map" edf:represent="false"></info>
</meta>
Run Code Online (Sandbox Code Playgroud)
edf :represent="false"会导致错误。我不想手动删除edf命名空间前缀,因为这不是我想要解析的唯一 XML 文件。它们有数百个,而且数量还在不断增加。
所以,我的问题是,如何忽略此错误(仅适用于 XML 命名空间)或者如何通过DOMDocument类定义/删除命名空间前缀?
我创建了一个Twitter小部件,并尝试将其放入Angular 2项目中,但JS文件不起作用。
如果我使用JS(在这里)插入它,则可以使用,但是当我切换到另一个选项卡并返回(我安装了Angular Routing)时,它消失了,并且显示了A标记中的内容(因此,“ Tweets by ...”)。
HTML代码(在home组件中):
<md-card-content>
<a class="twitter-timeline" data-lang="en" data-height="350" data-theme="light" data-chrome="noborders nofooter noheader noscrollbar transparent" href="https://twitter.com/profile">Tweets by profile</a>
</md-card-content>
Run Code Online (Sandbox Code Playgroud)
home.component.ts中的脚本,该代码由@ Arg0n提供(请看答案部分):
import { Component, OnInit } from '@angular/core';
import { Router, NavigationEnd } from '@angular/router';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {
constructor(private _router : Router) { }
public ngOnInit() {
this._router.events.subscribe(val => {
if (val instanceof NavigationEnd) {
(<any>window).twttr = (function (d, s, id) {
let …Run Code Online (Sandbox Code Playgroud)