2014-04-09 4 views
1

Groovy를 사용하여 기존 XML 문서를 편집하려고합니다. 여기 Groovy를 사용하여 기존 XML 문서 편집

static String addItem(def xmlFile){ 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") 

    StringWriter writer = new StringWriter(); 
    MarkupBuilder xml = new MarkupBuilder(writer); 

    def rss = new XmlParser().parse(xmlFile) 

    def newItem = new MarkupBuilder(writer) 

    // I'm a little lost at this point. 
    // I've tried several things with no luck.... 



    new XmlNodePrinter(new PrintWriter(new FileWriter(xmlFile))).print(rss) 

} 

그냥 RSS 피드입니다 원래 XML 파일입니다 : 지금까지, 나는 (XMLFILE 원본 XML 파일의 위치입니다) 다음과 같은 방법을 가지고있다. 나는 채널에 광고 항목을 시도하고있다 :

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 
<channel> 
<atom:link href="http://iccweb.ucdavis.edu/xml/iccrss.xml" rel="self" type="application/rss+xml" /> 
<title>UC Davis | Internship and Career Center | Upcoming Events</title> 
<link>http://iccweb.ucdavis.edu/students/calendarevents.htm</link> 
<description>Visit the ICC's web site for details on these and other upcoming events. Each quarter the ICC hosts new career and internship related career fairs, workshops, seminars, company information meetings and more!</description> 
<language>en-us</language> 
<lastBuildDate>Tue, 08 Apr 2014 15:50:52 -0700</lastBuildDate> 
<copyright>Copyright: (C) Regents of the University of California</copyright> 
<docs>http://www.ucdavis.edu/syndication/</docs> 
<ttl>15</ttl> 
<image> 
<title>UC Davis | Internship and Career Center | Upcoming Events</title> 
<url>http://iccweb.ucdavis.edu/imgs/common/ICC_logo_color-long.jpg</url> 
<link>http://iccweb.ucdavis.edu/students/calendarevents.htm</link> 
</image> 

<item> 
<guid isPermaLink="false">8450</guid> 
<pubDate>Tue, 08 Apr 2014 13:10:00 -0700</pubDate> 
<title>Resume Basics</title> 
<description> 
4/8/2014, 1:10pm-2:00pm. 229 South Hall. 
Learn the essentials of how to write a resume and cover letter that get you noticed. 
</description> 
<link>http://iccweb.ucdavis.edu/students/calendarevents.htm?d=4/8/2014</link> 
</item> 
</channel> 
</rss> 

답변

1

당신은 시도 할 수 있습니다 :

def rss = new XmlParser().parse(xmlFile) 
rss.channel + { 
    item { 
    guid(isPermaLink: "false", "8451") 
    } 
} 
//and so on... 
println xml 

this 매뉴얼 및 this API 문서에서보세요. 더 많은 질문을 주시기 바랍니다.

+0

오팔! 내가 가진 또 하나의 질문은 코드의 마지막 줄에 관한 것이다. new XmlNodePrinter (new PrintWriter (new FileWriter (xmlFile))). print (rss) 기존 파일 위에 전체 파일을 다시 쓰는 것처럼 보인다. 그럴까요? 그렇다면 전체 파일을 다시 작성하지 않고 새 노드를 추가하는 방법은 무엇입니까? 다른 스택 오버플로 질문을 시작해야합니까? 나는 행복하다. – GarySharpe

+0

흠 ... 나는 이것이 불가능하다고 생각한다. xml이 수정되면 전체 파일을 바꿔야합니다. – Opal

관련 문제