0

xml を返す関数がありますが、2 つの xml を返します

   <?xml version="1.0"?>

タグ

1回のコールで返すようにコールを修正することはできません。SimpleXMLElement を使用しようとしているので、この xml を simplexml にロードすると、タグが重複しているためエラーが発生します。xmlにロードする前にタグを削除する方法を知っている人は誰でも

私はやってみました

$new_xml = preg_replace('/<?xml(.*)?>(.*)?<\/?>/', '', $xml);

私もやった(ちなみにこれはうまくいく。それが最善の方法かどうかはわからない。

  $xml = str_replace('<?xml version="1.0"?>', '', $xml);

2 つの問題があります。

1).括弧内に特別な意味はありません[]

次のように、代わり[]に使用するように変更します。()(.|\s)

2)\通常の文字列内での動作とは異なります。

生の文字列を使用してみてください:

re.findall(r'word1 ..blah..')

r文字列のプレフィックスに注意してください。

それらをまとめる:

strings = re.findall(r'word1(.|\s)*word2(.|\s)*word3', f.read())

ただし、これにより返されるリストが変更されることに注意してください。

4

2 に答える 2

1

これにより、最初の行が終了 > まで削除され、末尾の改行文字が削除されます。

<?php
$xml = "<?xml version=\"1.0\"?>\n\t<tag></tag>";

     $xml = preg_replace('!^[^>]+>(\r\n|\n)!','',$xml);

echo $xml;
?>

また、バージョン 1.0 に準拠していない他の XML ファイルでも機能します。

于 2013-04-02T00:23:37.790 に答える