●
とりっくおあとりーと
方々のMMORPGではイベント三昧かな?
こんなんしたらUTF-8でのファイル出力が出来るようになったのでJAXP使うのは止め(笑)this.out = new PrintWriter( new OutputStreamWriter( new FileOutputStream( outname), this.getWriterEncoding()));
こんな感じにリソースとしてファイルを取得してたんだけど、これだとどうもファイルがキャッシュされるかなにかで、JAVA VMが動いている間にファイルを書き換えても、書き換えが反映されないみたい。InputSource xmlInp = new InputSource(getClass().getResourceAsStream(this.XMLNAME)); DOMParser parser = new DOMParser(); parser.parse(xmlInp); Document doc = parser.getDocument(); root = doc.getDocumentElement();
こんな風にしてみたら、書き換え後に読み込むとちゃんと反映されるようになりました。リソースとしてファイル名だけとって、ファイル名をパーサに渡してます。やり方として正しいかどうかは不明ですが、パーソナルなプログラムですしとりあえず動けばいいでしょう。java.net.URL xmlname = getClass().getResource( this.xmlfilename); this.xmlurl = xmlname.toString(); DOMParser parser = new DOMParser(); parser.parse( this.xmlurl); doc = parser.getDocument();
<?xml version="1.0" encoding="Shift_JIS"?>
<Mpeg7 xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" xmlns="http://www.mpeg7.org/2001/MPEG-7_Schema">
<Description xsi:type="ContentEntityType">
<MultimediaContent xsi:type="AudioVisualType" id="1">
<AudioVisual>
<MediaSourceDecomposition id="4">
<-- このAudioVisualSegmentをくりかえし -->
<AudioVisualSegment id="5">
<MediaInformation id="6">
<MediaProfile id="7">
<MediaFormat>
<Content href="">
</Content>
<VisualCoding>
<Format href="">
<Name>DivX5.02</Name>
</Format>
<Pixel resolution="640"/>
</VisualCoding>
<AudioCoding>
<Format href="">
<Name>MP3</Name>
</Format>
<AudioChannels>2</AudioChannels>
<Sample rate="32000"/>
</AudioCoding>
</MediaFormat>
<MediaInstance id="mediaInstance-8">
<InstanceIdentifier>こみっくパーティー</InstanceIdentifier>
<MediaLocator>
<MediaUri>http://localhost/mov/comic-party/</MediaUri>
</MediaLocator>
</MediaInstance>
</MediaProfile>
</MediaInformation>
<TextAnnotation type="story">
<FreeTextAnnotation>1〜13話</FreeTextAnnotation>
</TextAnnotation>
<TextAnnotation type="source">
<FreeTextAnnotation>TV</FreeTextAnnotation>
</TextAnnotation>
<TextAnnotation type="notes">
<FreeTextAnnotation>備考</FreeTextAnnotation>
</TextAnnotation>
</AudioVisualSegment>
</MediaSourceDecomposition>
</AudioVisual>
</MultimediaContent>
</Description>
</Mpeg7>
こんな感じ。ドキュメントが手元に無いので、スキーマ読みながらだいたいの感じで作ったのですが――
<Schema>
<Element name="Movie" type="MovieDataListType"/>
<ComplexType name="MovieDataListType">
<ComplexContent>
<Element name="Item" type="MovieItemType" maxOccurs="unbounded"/>
<Attribute name="id" type="ID"/>
<Attribute name="endFlag" type="boolean" required="false" fixed="false"/> <!-- 収集が終了したか -->
<Attribute name="preservation=" type="boolean" required="false" fixed="false"/> <!-- CD or DVDに退避したか -->
</ComplexContent>
</ComplexType>
<ComplexType name="MovieItemType">
<ComplexContent>
<Sequence>
<Element name="Title" type="String"/> <!-- タイトル名 -->
<Element name="Story" type="String"/> <!-- 話数 -->
<Element name="Source" type="Source" minOccurs="0"/> <!-- 映像ソース -->
<Element name="Notes" type="String" minOccurs="0"/> <!-- 備考 -->
</Sequence>
</ComplexContent>
</ComplexType>
</Schema>
こんな感じに書いてみました。んでー、DOMでぱーすしてー、Jakartaのregexp使って検索ー……な予定。RE re = new re( "正規表現");これだけで正規表現がつかえますよっ☆
boolean bool re.match( "対象文字列");