Kako iz XML dokumenata izvuci cisti tekst???
Kako iz XML dokumenata izvuci cisti tekst???
Zaključano
Zakačeno
Ukoliko poznaješ strukturu XML dokumenta onda je veoma lako. Ukoliko ne poznaješ - onda veoma teško. Jer, zapravo je pitanje šta podrazumevaš kao "čisti tekst".
Potpis
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
Verovatno misliš na sve ono što nije u tagovima.
Ako neće da radi innerText na celom dokumentu (mrzi me da probavam sad), možeš da regularnim izrazima brišeš tagove ili da napraviš jednostavnu XSL transformaciju.
Ako neće da radi innerText na celom dokumentu (mrzi me da probavam sad), možeš da regularnim izrazima brišeš tagove ili da napraviš jednostavnu XSL transformaciju.
Da, ali nekad je atribut u tagu. Da li je atribut tekst ili nije ?
Dakle moze ovo:
ali i ovo:
Šta je onda tekst ? Ako obriše tag <teniser> šta onda ostaje ?
Poželimo sreću Ani na današnjem meču u Wimbledonu !
Dakle moze ovo:
Code:
<teniser>
<pol>zenski</pol>
<ime>Ana</ime>
<prezime>Ivanovic</prezime>
</teniser>
<teniser>
<pol>zenski</pol>
<ime>Ana</ime>
<prezime>Ivanovic</prezime>
</teniser>
ali i ovo:
Code:
<teniser pol="zenski" ime="Ana" prezime="Ivanovic"/>
<teniser pol="zenski" ime="Ana" prezime="Ivanovic"/>
Šta je onda tekst ? Ako obriše tag <teniser> šta onda ostaje ?
Poželimo sreću Ani na današnjem meču u Wimbledonu !
Potpis
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
Za takve stvari ja koristim xpath
http://www.w3schools.com/xpath/default.asp
http://www.w3schools.com/xpath/default.asp
Pa kako iskoristiti XPath za ekstrakciju teksta?
Mozda ti ne zavrsava posao, ali moze ti dati ideju:
Code:
private string strOutInnerText = "";
public void Proba()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml( "<A a=\"t1\"><B b=\"t2\"/><B b=\"t3\"/><C><B b=\"t4\">t5</B><B b=\"t6\">t7</B></C></A>" );
XmlNode xmlNode = (XmlElement)xmlDoc.FirstChild;
if ( xmlNode != null ) ProcesChild( xmlNode );
}
private void ProcesChild( XmlNode xmlNode )
{
while ( xmlNode != null )
{
if ( xmlNode.NodeType != XmlNodeType.Text ) Print( (XmlElement)xmlNode );
if ( xmlNode.FirstChild != null ) ProcesChild( xmlNode.FirstChild );
xmlNode = xmlNode.NextSibling;
}
}
private void Print( XmlElement xmlNode )
{
if ( xmlNode.FirstChild != null && xmlNode.FirstChild.NodeType == XmlNodeType.Text)
strOutInnerText += xmlNode.InnerText + " -- ";
for ( int i = 0; i < xmlNode.Attributes.Count; ++i )
{
strOutInnerText += xmlNode.Attributes[i].InnerText + " - ";
}
}
private string strOutInnerText = "";
public void Proba()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml( "<A a=\"t1\"><B b=\"t2\"/><B b=\"t3\"/><C><B b=\"t4\">t5</B><B b=\"t6\">t7</B></C></A>" );
XmlNode xmlNode = (XmlElement)xmlDoc.FirstChild;
if ( xmlNode != null ) ProcesChild( xmlNode );
}
private void ProcesChild( XmlNode xmlNode )
{
while ( xmlNode != null )
{
if ( xmlNode.NodeType != XmlNodeType.Text ) Print( (XmlElement)xmlNode );
if ( xmlNode.FirstChild != null ) ProcesChild( xmlNode.FirstChild );
xmlNode = xmlNode.NextSibling;
}
}
private void Print( XmlElement xmlNode )
{
if ( xmlNode.FirstChild != null && xmlNode.FirstChild.NodeType == XmlNodeType.Text)
strOutInnerText += xmlNode.InnerText + " -- ";
for ( int i = 0; i < xmlNode.Attributes.Count; ++i )
{
strOutInnerText += xmlNode.Attributes[i].InnerText + " - ";
}
}
Hvala :)