【发布时间】:2014-11-04 01:27:24
【问题描述】:
我想在 MATLAB 中修改一个 svg 文件的 xml 文本信息。 我将 svg 文件重命名为 xml 文件
system('rename *myfile.svg* *myfile.xml')
得到 XML 文本信息:
fid = fopen(‘myfile.xml');
XMLdata = fscanf(fid, '%s');
XMLdata 是一个包含 XML 文本信息的 char 数组 现在我可以使用 strcmp 修改 XMLdata,例如:
new_claim = strrep(XMLdata, 'Sans', 'Times New Roman')
现在我无法使用 xmlwrite 将此 XMLdata 写入 xml 文件
xmlwrite('fileout.xml', XMLdata)
我遇到错误
使用 javaMethod 时出错 发生 Java 异常:
javax.xml.transform.TransformerException: java.net.MalformedURLException: no protocol:
<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><!--CreatedwithInkscape(http://www.inkscape.org/)--><svgxmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:cc="http://creativecommons.org/ns#"xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:svg="http://www.w3.org/2000/svg"xmlns="http://www.w3.org/2000/svg"xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"width="64"height="48"id="svg3033"version="1.1"inkscape:version="0.48.5r10040"sodipodi:docname="200mn.svg"><defsid="defs3035"/><sodipodi:namedviewid="base"pagecolor="#ffffff"bordercolor="#666666"borderopacity="1.0"inkscape:pageopacity="0.0"inkscape:pageshadow="2"inkscape:zoom="5.916495"inkscape:cx="61.898573"inkscape:cy="54.220135"inkscape:document-units="px"inkscape:current-layer="layer1"showgrid="false"inkscape:window-width="1280"inkscape:window-height="962"inkscape:window-x="-8"inkscape:window-y="-8"inkscape:window-maximized="1"/><metadataid="metadata3038"><rdf:RDF><cc:Workrdf:about=""><dc:format>image/svg+xml</dc:format><dc:typerdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><ginkscape:label="Layer1"inkscape:groupmode="layer"id="layer1"transform="translate(0,-1004.3622)"><textxml:space="preserve"style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Calibri;-inkscape-font-specification:Calibri"x="1.3270224e-007"y="1035.7983"id="text3049"sodipodi:linespacing="125%"><tspansodipodi:role="line"id="tspan3051"x="1.3270224e-007"y="1035.7983">200m</tspan></text></g></svg>
at com.icl.saxon.IdentityTransformer.transform(IdentityTransformer.java:92)
at com.mathworks.xml.XMLUtils.serializeXML(XMLUtils.java:175)
at com.mathworks.xml.XMLUtils.serializeXML(XMLUtils.java:44)
Caused by: java.net.MalformedURLException: no protocol:
<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><!--CreatedwithInkscape(http://www.inkscape.org/)--><svgxmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:cc="http://creativecommons.org/ns#"xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:svg="http://www.w3.org/2000/svg"xmlns="http://www.w3.org/2000/svg"xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"width="64"height="48"id="svg3033"version="1.1"inkscape:version="0.48.5r10040"sodipodi:docname="200mn.svg"><defsid="defs3035"/><sodipodi:namedviewid="base"pagecolor="#ffffff"bordercolor="#666666"borderopacity="1.0"inkscape:pageopacity="0.0"inkscape:pageshadow="2"inkscape:zoom="5.916495"inkscape:cx="61.898573"inkscape:cy="54.220135"inkscape:document-units="px"inkscape:current-layer="layer1"showgrid="false"inkscape:window-width="1280"inkscape:window-height="962"inkscape:window-x="-8"inkscape:window-y="-8"inkscape:window-maximized="1"/><metadataid="metadata3038"><rdf:RDF><cc:Workrdf:about=""><dc:format>image/svg+xml</dc:format><dc:typerdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><ginkscape:label="Layer1"inkscape:groupmode="layer"id="layer1"transform="translate(0,-1004.3622)"><textxml:space="preserve"style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Calibri;-inkscape-font-specification:Calibri"x="1.3270224e-007"y="1035.7983"id="text3049"sodipodi:linespacing="125%"><tspansodipodi:role="line"id="tspan3051"x="1.3270224e-007"y="1035.7983">200m</tspan></text></g></svg>
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at com.icl.saxon.IdentityTransformer.transform(IdentityTransformer.java:90)
... 2 more
java.net.MalformedURLException: no protocol:
<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><!--CreatedwithInkscape(http://www.inkscape.org/)--><svgxmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:cc="http://creativecommons.org/ns#"xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:svg="http://www.w3.org/2000/svg"xmlns="http://www.w3.org/2000/svg"xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"width="64"height="48"id="svg3033"version="1.1"inkscape:version="0.48.5r10040"sodipodi:docname="200mn.svg"><defsid="defs3035"/><sodipodi:namedviewid="base"pagecolor="#ffffff"bordercolor="#666666"borderopacity="1.0"inkscape:pageopacity="0.0"inkscape:pageshadow="2"inkscape:zoom="5.916495"inkscape:cx="61.898573"inkscape:cy="54.220135"inkscape:document-units="px"inkscape:current-layer="layer1"showgrid="false"inkscape:window-width="1280"inkscape:window-height="962"inkscape:window-x="-8"inkscape:window-y="-8"inkscape:window-maximized="1"/><metadataid="metadata3038"><rdf:RDF><cc:Workrdf:about=""><dc:format>image/svg+xml</dc:format><dc:typerdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title></dc:title></cc:Work></rdf:RDF></metadata><ginkscape:label="Layer1"inkscape:groupmode="layer"id="layer1"transform="translate(0,-1004.3622)"><textxml:space="preserve"style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Calibri;-inkscape-font-specification:Calibri"x="1.3270224e-007"y="1035.7983"id="text3049"sodipodi:linespacing="125%"><tspansodipodi:role="line"id="tspan3051"x="1.3270224e-007"y="1035.7983">200m</tspan></text></g></svg>
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at com.icl.saxon.IdentityTransformer.transform(IdentityTransformer.java:90)
at com.mathworks.xml.XMLUtils.serializeXML(XMLUtils.java:175)
at com.mathworks.xml.XMLUtils.serializeXML(XMLUtils.java:44)
Error in xmlwrite (line 83)
javaMethod('serializeXML',...
【问题讨论】:
-
我没有任何使用
xmlwrite的经验,但是看着the documentation 它似乎不接受字符串输入。 -
@excaza 你是对的,有没有什么方法可以用修改后的 char 数据类型'new_claim'编写一个 xml 文件?