के कुछ कोड उदाहरण मैं इस समय बहुत बड़ी एक्सएमएल फ़ाइलें> 40 एमबी से कुछ पार्स कर रहा हूँ कहां ढूंढूं। मैंने अभी स्केल में विकास करना शुरू कर दिया है, इसलिए मैंने कुछ अच्छे libs के लिए नेट ब्राउज़ किया और स्कैला स्केल पर ठोकर खाई जो बड़ी फाइलों को संभालने में बहुत अच्छा लगता है।मैं तराजू Xml
मैंने पढ़ लिया है: http://scala-scales.googlecode.com/svn/sites/scales/scales-xml_2.9.1/0.2/ScalesXmlIntro.html , http://scala-scales.googlecode.com/svn/sites/scales/scales-xml_2.9.2/0.4.4/PullParsing.html
और फिर pullXml समारोह परीक्षण किया है, सुनिश्चित करें कि सभी libs सही तरीके से आयात कर रहे हैं।
val pull = pullXml(new FileReader("/Users/mycrazyxml/tmp/large.xml"))
while(pull.hasNext){
pull.next match {
case Left(i : XmlItem) =>
// Handle XmlItem
Logger.info("XmlItem: "+i)
case Left(e : Elem) => {
// Handle Element
Logger.info("Element: "+e)
}
case Right(endElem) =>
// Handle endElement
Logger.info("Endelement: "+endElem)
}
}
यह परिणाम है कि पूरे फ़ाइल कंसोल के लिए मुद्रित किया जाता है! अच्छा! अब यह समय वस्तुओं को बनाने और डाटाबेस को बचाने के है, लेकिन मैं कैसे एक अच्छा तरीका में यह करने के लिए लोभी में समस्या हो रही है। मुझे वास्तव में कुछ अच्छे उदाहरण की आवश्यकता होगी।
ईजी। निम्नलिखित एक्सएमएल में कई एंटरप्राइज़ तत्व हैं जिनमें एक या कई स्थानीय यूनिट शामिल हो सकते हैं। यहां विचार स्थानीय एंटरप्राइज़ की सरणी के साथ एंटरप्राइज़ ऑब्जेक्ट बनाना है। जब अंत में एंटरप्राइज़ एंटरप्राइज़ ऑब्जेक्ट के साथ एंटरप्राइज़ ऑब्जेक्ट के साथ सेविंग विधि को एंटरप्राइज़ कॉल के साथ समापन विधि है।
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Info SYSTEM "info.dtd">
<Info>
<Enterprise>
<RegNo>12345678</RegNo>
<Address>
<StreetInfo>
<StreetName>Infinite Loop</StreetName>
<StreetNumber>1</StreetNumber>
</StreetInfo>
</Address>
<EName>
<Legal>Crazy Company</Legal>
</EName>
<SNI>
<Code>00000</Code>
<Rank>1</Rank>
</SNI>
<LocalUnit>
<CFARNo>987654321</CFARNo>
<LUType>1</LUType>
<LUName>Crazy Company Gym</LUName>
<LUStatus>1</LUStatus>
<SNI>
<Code>46772</Code>
<Rank>1</Rank>
</SNI>
<SNI>
<Code>68203</Code>
<Rank>2</Rank>
</SNI>
<Address>
<StreetInfo>
<StreetName>Infinite Loop</StreetName>
<StreetNumber>1</StreetNumber>
</StreetInfo>
</Address>
</LocalUnit>
<LocalUnit>
<CFARNo>987654322</CFARNo>
<LUType>1</LUType>
<LUName>Crazy Company Restaurant</LUName>
<LUStatus>1</LUStatus>
<SNI>
<Code>46772</Code>
<Rank>1</Rank>
</SNI>
<SNI>
<Code>68203</Code>
<Rank>2</Rank>
</SNI>
<Address>
<StreetInfo>
<StreetName>Infinite Loop</StreetName>
<StreetNumber>1</StreetNumber>
</StreetInfo>
</Address>
</LocalUnit>
</Enterprise>
<Enterprise>
<RegNo>12345671220</RegNo>
<Address>
<StreetInfo>
<StreetName>Cupertino Road</StreetName>
<StreetNumber>2</StreetNumber>
</StreetInfo>
</Address>
<EName>
<Legal>Fun Company HQ</Legal>
</EName>
<SNI>
<Code>00000</Code>
<Rank>1</Rank>
</SNI>
<LocalUnit>
<CFARNo>987654321</CFARNo>
<LUType>1</LUType>
<LUName>Fun Company</LUName>
<LUStatus>1</LUStatus>
<SNI>
<Code>46772</Code>
<Rank>1</Rank>
</SNI>
<SNI>
<Code>68203</Code>
<Rank>2</Rank>
</SNI>
<Address>
<StreetInfo>
<StreetName>Cupertino road</StreetName>
<StreetNumber>2</StreetNumber>
</StreetInfo>
</Address>
</LocalUnit>
</Enterprise>
</Info>
इसे समेटने के लिए। दिए गए एक्सएमएल के लिए मुझे अपनी ऑब्जेक्ट्स बनाने के लिए pullXml का उपयोग कैसे करना चाहिए और उनके साथ सेव विधि को कॉल करना चाहिए?
धन्यवाद! यह ठीक वही है जिसकी मुझे तलाश थी! पाठ() विधि यह है कि आपने स्वयं द्वारा घोषित किया है या यह स्केल में एक सहायक तरीका है? मेरा विचार आयात नहीं ढूंढ सकता है। – jakob
ठीक है यह xpath.Functions.text() मिला। हम्म मेरा विचार यह क्यों हल नहीं करता? – jakob