package main
import (
"bytes"
"code.google.com/p/go.net/html"
"fmt"
"log"
"strings"
)
func main() {
s := "Blah. <b>Blah.</b> Blah."
n, err := html.Parse(strings.NewReader(s))
if err != nil {
log.Fatalf("Parse error: %s", err)
}
var buf bytes.Buffer
if err := html.Render(&buf, n); err != nil {
log.Fatalf("Render error: %s", err)
}
fmt.Println(buf.String())
}
<html><head></head><body>Blah. <b>Blah.</b> Blah.</body></html>
वहाँ एक दस्तावेज खंडों के बाहर करने से html.Parse
को रोकने के लिए एक तरह से (यानी बचने <html>
जोड़ने <body>
आदि) है? मुझे html.ParseFragment
के बारे में पता है लेकिन ऐसा लगता है कि यह वही व्यवहार प्रदर्शित करता है।
आपको इसके चारों ओर पाठ लपेटकर एक माता पिता के तत्व के साथ पार्स किया जा सकता जैसे <span>
उसके बाद निम्न की तरह कुछ कर रही द्वारा प्राप्त कर सकते हैं:
n = n.FirstChild.LastChild.FirstChild
लेकिन यह है कि कम से कम कहने के लिए, लगता है अच्छी तरह से, kludgy।
आदर्श रूप से मैं यह करना चाहता हूं: इसमें शामिल नोड्स इनपुट, हेरफेर या निकालें, और परिणाम को एक स्ट्रिंग पर वापस लिखें, भले ही परिणाम एक अपूर्ण दस्तावेज़ हो।
नोट के अस्तित्व [ 'goquery'] (https://github.com/PuerkitoBio/goquery) जो कार्य आप करना चाहते हैं के लिए आसान हो सकता है। – nemo
धन्यवाद, और पूर्णता के लिए मैं फिर से जेरेमी का [गो-एचटीएमएल-ट्रांसफॉर्म] (https://code.google.com/p/go-html-transform) का उल्लेख करूंगा जिसका मैंने पहले उपयोग किया था। मैं एक्सपी/एचटीएमएल (अब go.net/html) के साथ पकड़ने की कोशिश कर रहा हूं, जो इसे संस्करण 1.2 के आसपास मानक लाइब्रेरी में बनाने की संभावना है, लेकिन इन तृतीय पक्ष परियोजनाओं को उभरने के लिए भी अच्छा लगता है। –