string.Replace符号

时间:2015-05-07 16:36:35

标签: c# xml replace fetchxml

我想替换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>

1 个答案:

答案 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>