Wie kann ich Format und XML-Verarbeitungsanweisungen mit Hilfe von Java StAX lesen?

StackOverflow https://stackoverflow.com/questions/404141

  •  03-07-2019
  •  | 
  •  

Frage

Erstens, wie ich die XML-Verarbeitungsanweisung forma ist es:

<?processingInstructionName attribute="value" attribute2="value2"?>

StAX verwenden, möchte ich dann, es zu lesen, indem die XMLStreamConstants.PROCESSING_INSTRUCTION Handling ( javadoc für diese beiden Methoden ist nicht sehr hilfreich.

  1. Ist die Formatierung der XML korrekt?
  2. Ist dies der richtige Weg, um zu gehen Parsen Verarbeitungsanweisungen mit dem StAX XMLStreamReader APIs?
  3. Wie verwende ich getPITarget() und getPIData() auf mehrere Argumente zurückgeben?
War es hilfreich?

Lösung

  

1.Is die XML korrekte Formatierung?

Ja , jedoch Sie beachten Sie, dass ein Verarbeitungsanweisung nicht über Attribute - nur Daten. Was aussieht wie Attribute sind Teil der Daten und einige Leute nennen sie „pseudo-attributes“.

  

2.Is dies der richtige Weg, um das Parsen Verarbeitungsanweisungen zu gehen, um den StAX XMLStreamReader APIs?

Ja.

  

3.How verwende ich getPITarget () und getPIData () mehrere Argumente zurück?

Wenn durch „mehr Argumente“, um die möglicherweise mehr als ein Pseudo-Attribute in den Daten enthalten bedeuten, ist die Antwort, dass der Code die Daten analysieren muß (mit einigen Standard-String-Methoden wie die C # split() und abrufen für alle Pseudo den Satz von Name-Wert-Paare -attributes.

Andere Tipps

Ich denke, dass dieser Begriff der Verarbeitungsanweisungen mit Attributen von einigen alten xml-Handbuch kommt. An einer Stelle gab es eine Diskussion Pi zu empfehlen zu ehren oder solche Strukturierung erfordern. Allerdings hat die offizielle XML-Spezifikation nie beauftragt oder auch eine solche Verwendung empfohlen.

Also im Grunde hast du Inhalte selbst analysieren -. Sie in einem beliebigen Format sein, aber wenn Sie wissen, dass es Attribut Schreibweise verwendet man es analysieren kann

Soweit ich weiß, keiner von Java XML-Parser oder Verarbeitungsprogramme unterstützen eine solche Nutzung, leider.

Obwohl Dimitre Antwort technisch korrekt ist, einige populären Bibliotheken analysieren jetzt Befehl Pseudo-Attribute Verarbeitung wie zu erwarten wäre. Die nachfolgenden Beispiele analysieren die folgende XML-Verarbeitungsanweisung den Wert für das href pseduo-Attribut zu erhalten:

<?xml-stylesheet type="text/xsl" href="markdown.xsl"?>

JDOM2

Mit JDOM2 :

import org.jdom2.ProcessingInstruction;
import org.xml.sax.helpers.DefaultHandler;

public class ProcessingInstructionHandler extends DefaultHandler {

  @Override
  public void processingInstruction( final String target, final String data ) {
    final ProcessingInstruction pi = new ProcessingInstruction( target, data );
    System.out.println( pi.getPseudoAttributeValue( "href" ) );
  }
}

Saxon

Mit Saxon :

import static net.sf.saxon.tree.util.ProcInstParser.getPseudoAttribute;
import org.xml.sax.helpers.DefaultHandler;

public class ProcessingInstructionHandler extends DefaultHandler {

  @Override
  public void processingInstruction( final String target, final String data ) {
    System.out.println( getPseudoAttribute( data, "href" ) );
  }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top