形式textarea中的XML文本...如何将XML作为XML接受?

时间:2009-12-25 23:18:44

标签: php xml

在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>

1 个答案:

答案 0 :(得分:3)

您可以在PHP中使用DOMDocument类:

$doc = new DOMDocument();
$doc->loadXML($yourXML);

其中$ yourXML是您从表单中获取的XML数据(例如,通过$ _POST或类似内容)。一旦你有了这个,你可以按照你的描述走过对象,或者使用XPath或类似的东西来导航和选择你想要的元素。