我想替换fetchxml查询中的一些符号
Fetchxml.Replace(" \"","'")。替换(" \ n"," ; \" +")。替换("<"" \"<");
我想用" +替换\ n(返回行) 并替换<用"< 但 替换(" \ n"," \" +")仍然无法正常工作\ n 和替换("<"," \"<")它取代<&#用\"<而不是"<
示例XML:
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"> <entity name="account"> <attribute name="name" /> <filter type="and"> <condition attribute="statecode" operator="eq" value="0" /> </filter> <link-entity name="contact" from="contactid" to="primarycontactid" visible="false" link-type="outer" alias="accountprimarycontactidcontactcontactid"> <attribute name="emailaddress1" /> </link-entity> </entity> </fetch>
期望的输出:
<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>"+ "<entity name='account'>"+ "<filter type='and'>"+ "<condition attribute='statecode' operator='eq' value='0' />"+ "</filter>"+ "</entity>"+ "</fetch>
答案 0 :(得分:0)
看起来你想要做的只是在这个XML的文本元素中插入'+'。这有点奇怪,但我会咬人。
我建议使用XML::Twig
在Perl中这很容易。 XML的问题在于它无法使用正则表达式轻松解析,但 可以使用XML解析器轻松解析。
所以给出了输入XML:
<fetch distinct="false" mapping="logical" output-format="xml-platform" version="1.0">
<entity name="account">
<attribute name="name"/>
<filter type="and">
<condition attribute="statecode" operator="eq" value="0"/>
</filter>
<link-entity alias="accountprimarycontactidcontactcontactid" from="contactid" link-type="outer" name="contact" to="primarycontactid" visible="false">
<attribute name="emailaddress1"/>
</link-entity>
</entity>
</fetch>
可以将其转换为所需输出 XML的近似值:
#!/usr/bin/perl
use strict;
use warnings;
my $xml = XML::Twig->new(
'pretty_print' => 'indented',
'twig_handlers' => {
'attribute' => sub { $_->delete },
'link-entity' => sub { $_->delete },
},
);
$xml->parse( \*DATA );
$xml ->print;
这会给你:
<fetch distinct="false" mapping="logical" output-format="xml-platform" version="1.0">
<entity name="account">
<filter type="and">
<condition attribute="statecode" operator="eq" value="0"/>
</filter>
</entity>
</fetch>
(如果你不希望它分开并缩进,请关闭pretty_print
标志)
现在,我不完全确定你在那里使用+
符号想要完成什么。您是想尝试引用XML结果吗?老实说,从XML的角度来看,这并没有真正意义重大。
如果确实,我想你可以:
my $output_xml = $xml ->sprint;
$output_xml =~ s/^\s+//gm;
$output_xml =~ s/\n</"+ "</g;
print $output_xml;
哪会给你:
<fetch distinct="false" mapping="logical" output-format="xml-platform" version="1.0">"+ "<entity name="account">"+ "<filter type="and">"+ "<condition attribute="statecode" operator="eq" value="0"/>"+ "</filter>"+ "</entity>"+ "</fetch>