2015-04-23 123 views
-2

我有以下字段中的数据串,我怎么能使用jQuery只检索一切从这个标签“<?xml version="1.0"?>”开始这个标签</soap:Envelope>jQuery的搜索开始标记和结束标记字符串

mylog.log:[qa53jdn575dganqmnen5a6irh4;OWI5MjFhMmI0NDk2NmYzNGNlNjcxOTg4NGRmMDExZGM=;1] INFO 2015-04-20 12:21:00,584 e.t.g.n.crm 
<?xml version="1.0"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 

    <soap:Body> 
     <webservice> 
      <sessiontoken>admin</sessiontoken> 
      <name>test</name> 
      <id>12345</id> 
      <parameters> 
       <parameter> 
        <key>e</key> 
        <value>test2</value> 
        <type>string</type> 
        <length>90</length> 
       </parameter> 
       <parameter> 
        <key>a</key> 
        <value>test1</value> 
        <type>string</type> 
        <length>50</length> 
       </parameter> 
       <parameter> 
        <key>n</key> 
        <value>12345</value> 
        <type>string</type> 
        <length>90</length> 
       </parameter> 
       <parameter> 
        <key>s</key> 
        <value>3</value> 
       </parameter> 
       <parameter> 
        <key>sf</key> 
        <value>test5</value> 
        <type>string</type> 
        <length>50</length> 
       </parameter> 
       <parameter> 
        <key>u</key> 
        <value>test6</value> 
        <type>string</type> 
        <length>50</length> 
       </parameter> 
      </parameters> 
     </webservice> 
    </soap:Body> 
</soap:Envelope> 

所以它会返回:

<?xml version="1.0"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Body> 
    <webservice> 
     <sessiontoken>admin</sessiontoken> 
     <name>test</name> 
     <id>12345</id> 
     <parameters> 
      <parameter> 
       <key>e</key> 
       <value>test2</value> 
       <type>string</type> 
       <length>90</length> 
      </parameter> 
      <parameter> 
       <key>a</key> 
       <value>test1</value> 
       <type>string</type> 
       <length>50</length> 
      </parameter> 
      <parameter> 
       <key>n</key> 
       <value>12345</value> 
       <type>string</type> 
       <length>90</length> 
      </parameter> 
      <parameter> 
       <key>s</key> 
       <value>3</value> 
      </parameter> 
      <parameter> 
       <key>sf</key> 
       <value>test5</value> 
       <type>string</type> 
       <length>50</length> 
      </parameter> 
      <parameter> 
       <key>u</key> 
       <value>test6</value> 
       <type>string</type> 
       <length>50</length> 
      </parameter> 
     </parameters> 
    </webservice> 
</soap:Body> 

回答

0
var start = '<?xml version="1.0"?>'; 
var end = '</soap:Envelope>'; 

var text = 'mylog.log:[qa53jdn575dganqmnen5a6irh4;OWI5MjFhMmI0NDk2NmYzNGNlNjcxOTg4NGRmMDExZGM=;1] INFO 2015-04-20 12:21:00,584 e.t.g.n.crm <?xml version="1.0"?>...</soap:Envelope>'; 

var startIndex = text.indexOf(start); 
var endIndex = text.indexOf(end); 
var innerText = text.slice(startIndex, endIndex); 

Here is the fiddle

+0

说,文本变量中,你有多个启动和结束标签,h ow你会遍历他们 –

+0

我会做一个正则表达式的标签迭代通过所有标签 – marcel

-1

你甚至不需要jQuery。您可以使用正则表达式来提取模式。

喜欢的东西

var yourString = "sdfsdfsdf ?xml version="1.0"?> </soap:Body>" 
var x = /<?xml(.+)</soap:Body>+/; 
var matches = x.match(yourString); 
+0

这是一条评论不是答案 – charlietfl

0
var longstring = 'mylog.log:[qa53jdn575dganqmnen5a6irh4;OWI5MjFhMmI0NDk2NmYzNGNlNjcxOTg4NGRmMDExZGM=;1] INFO 2015-04-20 12:21:00,584 e.t.g.n.crm <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <webservice> <sessiontoken>admin</sessiontoken> <name>test</name> <id>12345</id> <parameters> <parameter> <key>e</key> <value>test2</value> <type>string</type> <length>90</length> </parameter> <parameter> <key>a</key> <value>test1</value> <type>string</type> <length>50</length> </parameter> <parameter> <key>n</key> <value>12345</value> <type>string</type> <length>90</length> </parameter> <parameter> <key>s</key> <value>3</value> </parameter> <parameter> <key>sf</key> <value>test5</value> <type>string</type> <length>50</length> </parameter> <parameter> <key>u</key> <value>test6</value> <type>string</type> <length>50</length> </parameter> </parameters> </webservice> </soap:Body> </soap:Envelope>' 

然后

var substring = longstring.substr(longstring.indexOf('<?xml'),longstring.length); 
+0

这将无法正常工作,如果有更多的文字背后'' – marcel

相关问题