Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.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
当attrib的名称中有冒号时,将xsd转换为clojure.data.xml.Element会丢失数据_Xml_Mongodb_Clojure_Xsd - Fatal编程技术网

当attrib的名称中有冒号时,将xsd转换为clojure.data.xml.Element会丢失数据

当attrib的名称中有冒号时,将xsd转换为clojure.data.xml.Element会丢失数据,xml,mongodb,clojure,xsd,Xml,Mongodb,Clojure,Xsd,我在读取xsd文件时遇到问题。 当它将其转换为#clojure.data.xml.Element时,它会丢失一些属性,例如xmlns:tns–如何正确地转换它 最后,我希望将xml保存到noSQL数据库(我将mongodb与monger一起使用,因为它有很好的支持),然后稍后以相同的xml输出回来 这里是一个示例xsd,但我希望能够上载任何xsd/xslt/xml文件: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

我在读取xsd文件时遇到问题。 当它将其转换为#clojure.data.xml.Element时,它会丢失一些属性,例如xmlns:tns–如何正确地转换它

最后,我希望将xml保存到noSQL数据库(我将mongodb与monger一起使用,因为它有很好的支持),然后稍后以相同的xml输出回来

这里是一个示例xsd,但我希望能够上载任何xsd/xslt/xml文件:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
           xmlns:tns="http://tempuri.org/PurchaseOrderSchema.xsd" 
           targetNamespace="http://tempuri.org/PurchaseOrderSchema.xsd" 
           elementFormDefault="qualified">
 <xsd:element name="PurchaseOrder" type="tns:PurchaseOrderType"/>
 <xsd:complexType name="PurchaseOrderType">
  <xsd:sequence>
   <xsd:element name="ShipTo" type="tns:USAddress" maxOccurs="2"/>
   <xsd:element name="BillTo" type="tns:USAddress"/>
  </xsd:sequence>
  <xsd:attribute name="OrderDate" type="xsd:date"/>
 </xsd:complexType>

 <xsd:complexType name="USAddress">
  <xsd:sequence>
   <xsd:element name="name"   type="xsd:string"/>
   <xsd:element name="street" type="xsd:string"/>
   <xsd:element name="city"   type="xsd:string"/>
   <xsd:element name="state"  type="xsd:string"/>
   <xsd:element name="zip"    type="xsd:integer"/>
  </xsd:sequence>
  <xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/>
 </xsd:complexType>
</xsd:schema>
我得到的结果是:

#clojure.data.xml.Element{:tag :schema, :attrs {:targetNamespace http://tempuri.
org/PurchaseOrderSchema.xsd, :elementFormDefault qualified}, :content (#clojure.
data.xml.Element{:tag :element, :attrs {:name PurchaseOrder, :type tns:PurchaseO
rderType}, :content ()} #clojure.data.xml.Element{:tag :complexType, :attrs {:na
me PurchaseOrderType}, :content (#clojure.data.xml.Element{:tag :sequence, :attr
s {}, :content (#clojure.data.xml.Element{:tag :element, :attrs {:name ShipTo, :
type tns:USAddress, :maxOccurs 2}, :content ()} #clojure.data.xml.Element{:tag :
element, :attrs {:name BillTo, :type tns:USAddress}, :content ()})} #clojure.dat
a.xml.Element{:tag :attribute, :attrs {:name OrderDate, :type xsd:date}, :conten
t ()})} #clojure.data.xml.Element{:tag :complexType, :attrs {:name USAddress}, :
content (#clojure.data.xml.Element{:tag :sequence, :attrs {}, :content (#clojure
.data.xml.Element{:tag :element, :attrs {:name name, :type xsd:string}, :content
 ()} #clojure.data.xml.Element{:tag :element, :attrs {:name street, :type xsd:st
ring}, :content ()} #clojure.data.xml.Element{:tag :element, :attrs {:name city,
 :type xsd:string}, :content ()} #clojure.data.xml.Element{:tag :element, :attrs
 {:name state, :type xsd:string}, :content ()} #clojure.data.xml.Element{:tag :e
lement, :attrs {:name zip, :type xsd:integer}, :content ()})} #clojure.data.xml.
Element{:tag :attribute, :attrs {:name country, :type xsd:NMTOKEN, :fixed US}, :
content ()})})}

((slurp(:tempfile uploadSourceXML))
应引发错误。slurp可以返回字符串或nil,两者都不能实现IFn。是否缺少用于解析xml的函数?因为slurp不能返回
clojure.data.xml.Element
我已经更正了缺少的部分,所以它显示了xml/parse str-感谢您发现了这一点。slurp调用仍然中断
((slurp x))
将始终为任何
x
抛出异常我已经更正了slurp。我关心的是缺少的属性,例如xmlns:tns
#clojure.data.xml.Element{:tag :schema, :attrs {:targetNamespace http://tempuri.
org/PurchaseOrderSchema.xsd, :elementFormDefault qualified}, :content (#clojure.
data.xml.Element{:tag :element, :attrs {:name PurchaseOrder, :type tns:PurchaseO
rderType}, :content ()} #clojure.data.xml.Element{:tag :complexType, :attrs {:na
me PurchaseOrderType}, :content (#clojure.data.xml.Element{:tag :sequence, :attr
s {}, :content (#clojure.data.xml.Element{:tag :element, :attrs {:name ShipTo, :
type tns:USAddress, :maxOccurs 2}, :content ()} #clojure.data.xml.Element{:tag :
element, :attrs {:name BillTo, :type tns:USAddress}, :content ()})} #clojure.dat
a.xml.Element{:tag :attribute, :attrs {:name OrderDate, :type xsd:date}, :conten
t ()})} #clojure.data.xml.Element{:tag :complexType, :attrs {:name USAddress}, :
content (#clojure.data.xml.Element{:tag :sequence, :attrs {}, :content (#clojure
.data.xml.Element{:tag :element, :attrs {:name name, :type xsd:string}, :content
 ()} #clojure.data.xml.Element{:tag :element, :attrs {:name street, :type xsd:st
ring}, :content ()} #clojure.data.xml.Element{:tag :element, :attrs {:name city,
 :type xsd:string}, :content ()} #clojure.data.xml.Element{:tag :element, :attrs
 {:name state, :type xsd:string}, :content ()} #clojure.data.xml.Element{:tag :e
lement, :attrs {:name zip, :type xsd:integer}, :content ()})} #clojure.data.xml.
Element{:tag :attribute, :attrs {:name country, :type xsd:NMTOKEN, :fixed US}, :
content ()})})}