在PHP中有一种简单的方法吗?如何从格式textarea中获取格式为XML的纯文本并让PHP将其作为XML?我可以在它是一个XML对象之后找到如何走树。
在这个示例xml上尝试了richsage的技术:
<?xml version="1.0"?>
<videocollection>
<title id="1">Tootsie</title>
<genre>comedy</genre>
<year>1982</year>
<language>English</language>
<cast>Dustin Hoffman</cast>
<cast>Jessica Lang</cast>
<cast>Teri Gar</cast>
<cast>Sydney Pollak</cast>
<crew>
<director>Sydney Pollak</director>
</crew>
<title id="2">Jurassic Park</title>
<genre>science fiction</genre>
<year>1993</year>
<language>English</language>
<cast>Sam Neil</cast>
<cast>Laura Dern</cast>
<cast>Jeff Goldblum</cast>
<crew>
<director>Steven Spielberg</director>
</crew>
<title id="3">Mission Impossible</title>
<genre>action</genre>
<year>1996</year>
<language>English</language>
<cast>Tom Cruise</cast>
<cast>Jon Voight</cast>
<cast>Emmanuelle Beart</cast>
<cast>Jean Reno</cast>
<crew>
<director>Brian de Palma</director>
</crew>
</videocollection>
这是我的代码:
<html>
<head><title></title></head>
<body>
</body>
<?php
echo $_SERVER['PHP_SELF'];
$in_xml=$_POST['in_xml'];
if ($in_xml) {
print "We got it!...";// . $in_xml;
$doc = new DOMDocument();
$doc->loadXML( $in_xml);
} else {
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<textarea name="in_xml" cols="40" rows="10">
Enter your comment here
</textarea>
<input type="submit" value="Submit">
<?php
}
?>
</html>
收到一大堆警告: 警告:DOMDocument :: loadXML()[domdocument.loadxml]:字符串未启动期望'或'在实体中,第1行/Library/WebServer/Documents/sandbox/parse_xml/index.php中的第1行
警告:DOMDocument :: loadXML()[domdocument.loadxml]:格式错误的声明期望实体中的版本,第12行的/Library/WebServer/Documents/sandbox/parse_xml/index.php中的行:1
警告:DOMDocument :: loadXML()[domdocument.loadxml]:实体中需要空白,第12行/Library/WebServer/Documents/sandbox/parse_xml/index.php中的第1行
警告:DOMDocument :: loadXML()[domdocument.loadxml]:解析XML声明:'?&gt;'预期在实体中,第12行/Library/WebServer/Documents/sandbox/parse_xml/index.php中的第1行
警告:DOMDocument :: loadXML()[domdocument.loadxml]:AttValue:“或'在实体中预期,第4行/Library/WebServer/Documents/sandbox/parse_xml/index.php中第4行
警告:DOMDocument :: loadXML()[domdocument.loadxml]:属性在实体中构造错误,第12行/Library/WebServer/Documents/sandbox/parse_xml/index.php中的第4行
警告:DOMDocument :: loadXML()[domdocument.loadxml]:无法在实体中找到开始标记标题行4的结尾,在/Library/WebServer/Documents/sandbox/parse_xml/index.php中找到行:4第12行
警告:DOMDocument :: loadXML()[domdocument.loadxml]:打开和结束标记不匹配:videocollection第3行和实体中的标题,第4行/Library/WebServer/Documents/sandbox/parse_xml/index.php on第12行
警告:DOMDocument :: loadXML()[domdocument.loadxml]:实体文档末尾的额外内容,第12行/Library/WebServer/Documents/sandbox/parse_xml/index.php中第5行< / p>
答案 0 :(得分:3)
您可以在PHP中使用DOMDocument类:
$doc = new DOMDocument();
$doc->loadXML($yourXML);
其中$ yourXML是您从表单中获取的XML数据(例如,通过$ _POST或类似内容)。一旦你有了这个,你可以按照你的描述走过对象,或者使用XPath或类似的东西来导航和选择你想要的元素。