public static Map<String,String[]> toMap(InputStream inStream) throws DocumentException, IOException{
Map<String,String[]> map=new HashMap<String,String[]>();
SAXReader reader = new SAXReader();
Document doc = reader.read(inStream,"utf-8");
Element root = doc.getRootElement();
List<Element> es=root.elements();
HashSet<String> names=new HashSet<String>();
for(Element e:es){
names.add(e.getName());
}
int i=0;
String value;
for(String name:names){
es=root.elements(name);
String[] values=new String[es.size()];
for(Element e:es){
value=e.getText();
values[i++]=value.equals("")?null:value;
}
map.put(name, values);
i=0;
}
return map;
}上面代码是java解析xml的一个方法
xml大概类似这样的结构<?xml version="1.0" encoding="UTF-8"?>
<data>
<name>aaa</name>
<age>10</age>
<aa>1</aa><aa>2</aa><aa>3</aa><aa>4</aa>
<bb>2</bb><bb>3</bb><bb>4</bb>
</data>现在我想求
php的代码
要求返回如此的数组array(
'name'=>array('aaa'),
'age'=>array('10'),
'aa'=>array('1','2','3','4'),
'bb'=>array('2','3','4')
);上面的xml是通过ajax.send(xml)过来的
不晓得php有没有
获得inputStream这样类似的方法
在服务器端应该是一个流文件
所以解析xml文件的函数的参数也是个流 刚学php 不懂得甚多 恳请前辈指教啊
<?xml version="1.0" encoding="UTF-8"?>
<data>
<name>aaa</name>
<age>10</age>
<aa>1</aa><aa>2</aa><aa>3</aa><aa>4</aa>
<bb>2</bb><bb>3</bb><bb>4</bb>
</data>
xml;
$obj = simplexml_load_string($xml);
$arr = array();
foreach($obj as $v){
$arr[] = $v;
}
echo '<pre>';print_r(get_object_vars($obj));
/*
array( 'name'=>array('aaa'), 'age'=>array('10'), 'aa'=>array('1','2','3','4'), 'bb'=>array('2','3','4') );
*/
$xml = <<<xml
<?xml version="1.0" encoding="UTF-8"?>
<data>
<name>aaa</name>
<age>10</age>
<aa>1</aa><aa>2</aa><aa>3</aa><aa>4</aa>
<bb>2</bb><bb>3</bb><bb>4</bb>
</data>
xml;
$obj = simplexml_load_string($xml);
echo '<pre>';print_r(get_object_vars($obj));
//xml是通过ajax.send(xml)过来的
//$s = file_get_contents('php://input');
$s =<<< XML
<?xml version="1.0" encoding="UTF-8"?>
<data>
<name>aaa</name>
<age>10</age>
<aa>1</aa><aa>2</aa><aa>3</aa><aa>4</aa>
<bb>2</bb><bb>3</bb><bb>4</bb>
</data>
XML;
$xml = new SimpleXMLElement($s);
settype($xml, 'array');
print_r($xml);
Array
(
[name] => aaa
[age] => 10
[aa] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
) [bb] => Array
(
[0] => 2
[1] => 3
[2] => 4
))
<<< XML
<?xml version="1.0" encoding="UTF-8"?>
<data>
<name>aaa</name>
<age>10</age>
<aa>1</aa><aa>2</aa><aa>3</aa><aa>4</aa>
<bb>2</bb><bb>3</bb><bb>4</bb>
</data>
XML;
这样等同于 定义了一个xml的字符串吧 我想要的结果是 这个xml是客户端通过http请求发送过来的 怎么获得这个xml的引用 你们也可以这么理解 就是post了一个字节流 然后在服务器端怎么输出来 然后解析
比如客户端脚本
var xml='<?xml version="1.0" encoding="UTF-8"?>'+
'<data>'+
'<name>aaa</name>'+
'<age>10</age>'+
'<aa>1</aa><aa>2</aa><aa>3</aa><aa>4</aa>'+
'<bb>2</bb><bb>3</bb><bb>4</bb>'+
'</data>';
XMLHTTP.open('post','xxx.php',true);
XMLHTTP.onreadystatechange=function(){
...
}
XMLHTTP.send(xml);在java里可以用request.getInputStream获取这个xml的字节流
php里的相应代码是?? 这个是关键地方
$s = file_get_contents('php://input');