1

XML ファイルを指定し、1 つのタグに多数の属性が含まれています。ただし、そのうちの1つがスキップされることがあります。例:

<data>
    <item attribute0="value 0" attribute1="value 1" attribute2="value 2">
    <item attribute0="value 0" attribute1="value 1">
    <item attribute0="value 0" attribute1="value 1" attribute2="value 2">
</data>

このファイルを処理するために SAX パーサーを使用しており、startElementメソッドですべての属性の値を取得していますが、取得する前にattribute2、それが存在するかどうかを確認する必要があります。

4

3 に答える 3

1

getIndex(name)またはgetIndex(uri, localName)を使用して、属性が存在するかどうかを確認できます。-1 が返された場合、属性は存在しませんでした。getIndex javadocを参照してください。

于 2012-09-30T12:41:21.750 に答える
1

私の答えは、SAX パーサーを使用して、Javanator からの答えに基づいています。

属性が空かどうかは、次の方法で確認できます。

if (item.getAttribute("attribute2").isEmpty()) { }

public boolean isEmpty()

戻り値: length() が 0 の場合は true、それ以外の場合は false

特定の属性が存在するかどうかを尋ねる別の方法は次のとおりです。

if (item.hasAttribute("attribute2")) { }

boolean hasAttribute(文字列名)

指定された名前の属性がこの要素で指定されている場合、またはデフォルト値がある場合は true を返し、それ以外の場合は false を返します。

于 2018-01-18T16:31:30.903 に答える
0

このリンクは SAXParser の良い例です

http://java-samples.com/showtutorial.php?tutorialid=152

startElement デリゲートでは、通常、Attributes(org.xml.sax.Attributes) を読み取ります。

//Event Handlers
public void startElement(String uri, String localName, String qName,
    Attributes attributes) throws SAXException {
 // Read Attributes Here    
}

まず、検索することもできます

attributes.getLength() 

フィードで必要な数の属性を取得できるかどうかを確認するメソッド

本当に望ましいのは、これらについて心配する必要がなく、すべてを取得できるかのようにコーディングすることです。

もしも

 attributes.getValue("blahblah"); 

null を返します。つまり、そこにはありません。

また、データ オブジェクトに null を直接入力し、コード自体でそれらを使用する際に予防措置を講じます。(ヌルチェックなど)

それが役に立てば幸い :)

于 2012-09-30T12:47:53.407 に答える