是否可以使用PHP的SimpleXML函数从头开始创建XML对象?通过函数列表,可以将现有的XML字符串导入到可以操作的对象中,但如果我只想从头开始以编程方式生成XML对象,那么最好的方法是什么?
我发现你可以使用simplexml_load_string()并传入你想要的根字符串,然后你有一个你可以通过添加子项来操作的对象......虽然这看起来像是一种黑客,因为我必须实际上,在加载之前,将一些XML硬编码到字符串中.
我已经使用DOMDocument函数完成了它,虽然它有点令人困惑,因为我不确定DOM与创建纯XML文档有什么关系......所以也许它的命名很糟糕:-)
这就是我想要的:
text text text text text text text text text text text
text text text text text text text text text text text
+-----------+
| some text |
+-----------+
text text text text text text text text text text text
text text text text text text text text text text text
Run Code Online (Sandbox Code Playgroud)
..."some text"块是div.我希望div是包含其文本而不包装所需的最小宽度.如果文字太长而不适合没有包装,那么它可以包装.
我不想为div设置明确的宽度.我也不想设置min-width或max-width; 就像我说的,如果有太多的文字要包含在一行而没有包装,那么如果它包装就没关系.
关于PHP函数声明关键字一个小点:如果你有一类方法是静态的,应在static关键字的知名度关键字之前或之后都(public,protected,private)?假设您的所有方法(静态或其他方法)都有可见性关键字,那么您希望visibility关键字与关键字保持在同一位置function:
public function foo() {}
public function bar() {}
protected function baz() {}
private function quux() {}
Run Code Online (Sandbox Code Playgroud)
现在假装一对夫妇是静态的:
public function foo() {}
static public function bar() {}
protected function baz() {}
static private function quux() {}
Run Code Online (Sandbox Code Playgroud)
此外,如果某个方法是静态的,那么您希望这是第一个看到的方法,因为这对于它甚至是可见性关键字所做的方法有更多的影响.
这严格来说是一个可读性问题,因为它显然没有功能或设计后果.(我能想到的.)
我在同一个父目录中有两个目录.调用父目录库和子目录alpha和bravo.我想用bravo替换alpha.最简单的方法是:
rm -rf alpha
mv bravo alpha
Run Code Online (Sandbox Code Playgroud)
mv命令是原子的,但rm -rf不是.在bash中有一种简单的方法可以用bravo原子替换alpha吗?如果没有,有复杂的方法吗?
附录:
如果目录在短时间内不存在,那么这不是一个不可逾越的问题.只有一个地方试图访问alpha,它会在做任何关键事情之前检查alpha是否存在.如果没有,它会给出错误消息.但如果有办法做到这一点会很好.:)也许有一些方法可以直接修改inode,或者某些东西......
当您在Firefox中查看简单的XML文档时,它会进入标准的XML显示模式,您可以在其中折叠子树等.但它的功能非常有限; 没有什么比"全部展开"和"全部折叠"按钮更方便了,这就是令人讨厌的"这个XML文件似乎没有与之相关的任何样式信息.文档树显示在页面顶部的消息下方".有没有不错的Firefox扩展提供更好的XML查看/操作/导航?我查看了Mozilla扩展存储库,但似乎没有任何有希望的东西.
这个:
$XML = new SimpleXMLElement("<foo />");
echo($XML->asXML());
Run Code Online (Sandbox Code Playgroud)
...输出:
<?xml version="1.0"?>
<foo/>
Run Code Online (Sandbox Code Playgroud)
但我也希望它输出编码:
<?xml version="1.0" encoding="UTF-8"?>
<foo/>
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉SimpleXMLElement包含<?xml?>标签的编码属性?除此之外:
$XML = new SimpleXMLElement("<?xml version='1.0' encoding='utf-8'?><foo />");
echo($XML->asXML());
Run Code Online (Sandbox Code Playgroud)
哪个有效,但是必须手动指定版本和编码很烦人.
假设为了这个问题的目的,我不能使用DOMDocument.
有没有办法,在HTML中,在<img>标签中包含动画GIF,但是自动告诉GIF不动画?我意识到用户可以通过按ESC或单击停止来停止动画,但我希望GIF根本不动画.
我只想在一个特定页面上执行此操作,并且制作(1500+)GIF的单独非动画版本是不可行的.我只是希望GIF没有动画.
文件foo.txt存在于远程计算机上:/home/user/foo.txt
它在本地计算机上不存在.
我想使用rsync删除foo.txt.
我不知道(并且为了这个问题的目的而假设我无法找到)本地或远程机器上/ home/user中的其他文件,所以我不能只是同步整个目录.
我可以使用什么rsync命令删除远程计算机上的foo.txt?
输出HTML时,有几个不同的地方可以将文本解释为控制字符而不是文本文字.例如,在"常规"文本中(即,在任何元素标记之外):
<div>This is regular text</div>
Run Code Online (Sandbox Code Playgroud)
以及属性值:
<input value="this is value text">
Run Code Online (Sandbox Code Playgroud)
并且,我相信,在HTML评论中:
<!-- This text here might be programmatically generated
and could, in theory, contain the double-hyphen character
sequence, which is verboten inside comments -->
Run Code Online (Sandbox Code Playgroud)
这三种文本中的每一种都有不同的规则,必须如何转义才能被视为非标记.所以我的第一个问题是,HTML中是否还有其他任何字符可以解释为标记/控制字符?上述情况显然对需要转义的内容有不同的规定.
第二个问题是,为了确保任何嵌入的文本被视为非标记,需要转义的规范的,全局安全的字符列表(对于每个上下文)是什么?例如,从理论上讲,您只需要在属性值中转义"和",因为在属性值中,只有结束分隔符('或"取决于属性值以哪个分隔符开头)具有控制含义.同样,在"常规"文本中只有<和&具有控制意义.(我意识到并非所有的HTML解析器都是相同的.我最感兴趣的是为了安抚符合规范的解析器而需要转义的最小字符集是什么.)
切向:以下文本将抛出错误,因为HTML 4.01严格:
<a href="http://example.com/file.php?x=1&y=2">foo</a>
Run Code Online (Sandbox Code Playgroud)
具体来说,它说它不知道实体"&y"应该是什么.如果你在&之后放置一个空格,那么它就可以正常验证.但是如果你在运行中生成它,你可能不想检查每次使用&是否会导致验证错误,而只是转义所有和内部属性值.
我从某个源获取XML字符串.我创建一个DOMDocument对象并将XML字符串加载到其中(使用DOMDocument :: loadXML()).然后我使用各种方法(例如DOMXPath)浏览XML文档,直到找到我想要的节点(当然是DOMNode).
此节点有一堆的后裔,我想采取整个节点(及其后代),并从它创建一个新的DOMDocument对象.我不知道该怎么做; 我尝试创建一个新的DOMDocument并使用DOMDocument :: importNode(),但这似乎只有在DOMDocument中已经有一个主文档节点时才有效,在这种情况下它会将导入的节点作为主文档节点的子节点附加,这不是我想要的 - 我希望导入的节点成为DOMDocument主节点.
也许有一种更简单的方法(即更简单的方法来提取原始XML的一部分,我想将其转换为自己的文档),但我不知道.我对DOMDocument比较新,虽然我已经使用了SimpleXMLElement足以让它烦恼.