Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何解析转换为JSON的XML_Jquery_Xml_Json_Xml Parsing_Nodelist - Fatal编程技术网

Jquery 如何解析转换为JSON的XML

Jquery 如何解析转换为JSON的XML,jquery,xml,json,xml-parsing,nodelist,Jquery,Xml,Json,Xml Parsing,Nodelist,我从Web服务中获取了一个xml文件 <MasterProducts> <MasterProduct> <Productcode>023DDC</Productcode> <Description>Dell CRT 17 Computer Monitor E771a</Description> <ThumbPic>NoImage.png</ThumbPic> <RRP>0.000000&l

我从Web服务中获取了一个xml文件

<MasterProducts> <MasterProduct> <Productcode>023DDC</Productcode> <Description>Dell CRT 17 Computer Monitor E771a</Description> <ThumbPic>NoImage.png</ThumbPic> <RRP>0.000000</RRP> <Stock>2</Stock> </MasterProduct> </MasterProducts>
我只得到了节点列表,但还没有从标记中获得所需的数据

编辑: 使用在线转换器,我得到了下面的JSON

{
   "MasterProducts": {
      "MasterProduct": {
  "Productcode": "023DDC",
  "Description": "Dell CRT 17 Computer Monitor E771a",
  "ThumbPic": "NoImage.png",
  "RRP": "0.000000",
  "Stock": "2"
      }
  }
 }

数据似乎是一种字符串类型。“getElementsByTagName”仅在dom元素和dom本身上可用(在某些浏览器中)。尝试将您的响应添加到隐藏的div中,并使用jQuery查询它

$("#hidden").html(data);
然后使用jquery查询该div,或者您可以直接使用dom

$("#hidden").find("MasterProducts")[0].getElementsByTagName("MasterProduct")

根据,您返回的JSON是有效的,因此您的脚本应该能够使用点表示法访问数据内容,而不必像解析XML那样解析节点

var data ={
            "MasterProducts": {
                "MasterProduct": {   
                    "Productcode": "023DDC",
                    "Description": "Dell CRT 17 Computer Monitor E771a",
                    "ThumbPic": "NoImage.png",
                    "RRP": "0.000000",
                    "Stock": "2"
                 }   
             }  
         }

 var description = data.MasterProducts.MasterProduct.Description;

说明将包含“Dell CRT 17 Computer Monitor E771a”

您可以将xml直接存储在jQuery obj中,而无需将其添加到dom中,如另一个答案所示

var $xml = $(data);
然后简单地使用jQuery来定位特定的元素,避免使用getElementsByTagName,因为它只在某些浏览器中可用

var MasterProducts = [];

$xml.find('MasterProduct').each(function(){
   var $masterProduct = $(this);
   var masterProduct = {};
   $masterProduct.find('*').each(function(){
      masterProduct[$(this).get(0).tagName] = $(this).text();
   });
   MasterProducts.push(masterProduct);
});
最后,MasterProducts数组应该包含一个JavaScript对象,然后通过以下调用将其转换为JSON

var json = JSON.stringify(MasterProducts);

我把这个放在桌子上。请参见

是否可以添加JSON或至少添加一个类似的示例?使用JSON时不需要使用getElementsByTagName。只需使用点符号直接访问数据即可。。。var items=data.MasterProducts.MasterProducts.whatever.whatever当我有几组结果需要填充数组时会发生什么情况这应该在chrome中工作。你想让我做一把小提琴吗?是的,那会很有帮助的
var json = JSON.stringify(MasterProducts);