同じ XML ドキュメントを表現する方法は複数あります (以下を参照)。空白と引用符の違いにより、正規表現の記述 (および維持) が困難になる場合があります。
input.xml (表現 1)
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" contentScriptType="text/ecmascript" width="1024" zoomAndPan="magnify" contentStyleType="text/css" viewBox="0 0 1024 768" height="768" preserveAspectRatio="xMidYMid meet" version="1.0">
input.xml (表現 2)
<?xml version="1.0" encoding="UTF-8"?>
<svg
xmlns:xlink = 'http://www.w3.org/1999/xlink'
xmlns = 'http://www.w3.org/2000/svg'
contentScriptType = 'text/ecmascript'
width = '1024'
zoomAndPan = 'magnify'
contentStyleType = 'text/css'
viewBox = '0 0 1024 768'
height = '768'
preserveAspectRatio = 'xMidYMid meet'
version = '1.0'>
XML パーサーの使用をお勧めします。以下は、StAX (JSR-173)を使用して実行する方法です。Java SE 6 には、StAX パーサーの実装が含まれています。
デモ
package forum12193899;
import java.io.StringReader;
import javax.xml.stream.*;
import javax.xml.transform.stream.StreamSource;
public class Demo {
public static void main(String[] args) throws Exception {
XMLInputFactory xif = XMLInputFactory.newFactory();
StreamSource xml = new StreamSource("src/forum12193899/input.xml");
String xmlString = "<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns=\"http://www.w3.org/2000/svg\" contentScriptType=\"text/ecmascript\" width=\"1024\" zoomAndPan=\"magnify\" contentStyleType=\"text/css\" viewBox=\"0 0 1024 768\" height=\"768\" preserveAspectRatio=\"xMidYMid meet\" version=\"1.0\">";
XMLStreamReader xsr = xif.createXMLStreamReader(new StringReader(xmlString));
xsr.nextTag(); // Advance to "svg" element.
int attributeCount = xsr.getAttributeCount();
String[] array = new String[attributeCount];
for(int x=0; x<attributeCount; x++) {
StringBuilder stringBuilder = new StringBuilder();
array[x]= xsr.getAttributeLocalName(x) + "=\"" + xsr.getAttributeValue(x) + "\"";
}
// Output the Array
for(String string : array) {
System.out.println(string);
}
}
}
出力
contentScriptType="text/ecmascript"
width="1024"
zoomAndPan="magnify"
contentStyleType="text/css"
viewBox="0 0 1024 768"
height="768"
preserveAspectRatio="xMidYMid meet"
version="1.0"