从API级别11开始,Android的WebView有这个saveWebArchive方法:http://developer.android.com/.
它可以将整个网站保存为webarchives,这太棒了!但是如何将下载的内容恢复到webview中?我试过了
webview.loadUrl(Uri.fromFile(mywebarchivefile));
Run Code Online (Sandbox Code Playgroud)
但这只会在屏幕上显示xml.
我希望能够将HTML页面保存/存档为一个文件(没有那些讨厌的外部文件夹).
我希望生成的文件包含所有样式,图像和链接(视频和Flash也很好,但不是很重要).
我希望生成的文件可以搜索和编辑.
微软的MHT就是这样的工具之一,但不幸的是,它在Linux下无法搜索.MHT很好,但我不想被一个操作系统或一个公司锁定.什么是一个好的选择 - 或者可能有一些我没有想到的完全不同的解决方案?
提前感谢您的建议!
我正在为Lion开发一个应用程序,我想要做的是打开.webarchive文件,修改DOM的片段,然后将修改后的DOM写出到同一个文件中.
到目前为止,这是我的代码.它打开webarchive,修改它,然后将其保存回文件.
NSString *archivePath = @"/Users/tigger/Library/Mail/V2/MailData/Signatures/1216DD8D-C7E2-4DE1-9FCD-0A9A3412C788.webarchive";
NSData *plistData = [NSData dataWithContentsOfFile:archivePath];
NSString *error;
NSPropertyListFormat format;
NSMutableDictionary *plist;
plist = (NSMutableDictionary *)[NSPropertyListSerialization propertyListFromData:plistData
mutabilityOption:NSPropertyListMutableContainersAndLeaves
format:&format
errorDescription:&error];
if(!plist){
printf("no plist");
[error release];
}else{
NSString *s = [NSString stringWithUTF8String:[[[plist objectForKey:@"WebMainResource"] objectForKey:@"WebResourceData"] bytes]];
NSString *new = [s stringByReplacingOccurrencesOfString:@"</body>" withString:@"hey there!</body>"];
[[plist objectForKey:@"WebMainResource"] setObject:new forKey:@"WebResourceData"];
printf("Archive: %s", [[plist description] UTF8String]);
NSData *data = [NSPropertyListSerialization dataFromPropertyList:plist format:NSPropertyListBinaryFormat_v1_0 errorDescription:nil];
[data writeToURL:[NSURL fileURLWithPath:@"/Users/tigger/Library/Mail/V2/MailData/Signatures/test.webarchive"] atomically:YES];
}
Run Code Online (Sandbox Code Playgroud)
问题是生成的webarchive无效.原件看起来像这样:
bplist00—_WebMainResource’
_WebResourceTextEncodingName_WebResourceFrameName^WebResourceURL_WebResourceData_WebResourceMIMETypeUUTF-8PUdata:O<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: …Run Code Online (Sandbox Code Playgroud) 我一直在寻找并且没有找到任何可以创建Safari的webarchive格式的工具的参考.
有没有人有指向创建此格式的代码,或至少是格式参考文档?
理想情况下,我想构建一个工具来获取目录并拆分webarchive,以便加载到iPhone中.
有谁知道你是否可以在iPhone上以编程方式打开.webarchive?.webarchive是Safari打包网页的方式,它将相关资源整合到一个文件中.
我尝试创建一个并浏览到移动safari中的链接,但它没有工作....
注意:我有点希望这可以在没有第三方应用程序的情况下完成,因为它是一种很好的方法来打包WebApp以便在iphone上使用而无需第三方工具.
我尝试将战争部署到Tomcat 7.0.29中.我有以下日志堆栈:
GRAVE: Error waiting for multi-thread deployment of context descriptors to complete
java.util.concurrent.ExecutionException: java.lang.StackOverflowError
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
at java.util.concurrent.FutureTask.get(FutureTask.java:83)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:574)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1413)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:313)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:401)
at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:346)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1140)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:785)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.StackOverflowError
at java.util.HashSet.<init>(HashSet.java:86)
at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2208)
at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2227)
at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2227)
at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2227)
at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2227)
at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2227)
at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2227)
at org.apache.catalina.startup.ContextConfig.populateSCIsForCacheEntry(ContextConfig.java:2227)
Run Code Online (Sandbox Code Playgroud)
(许多堆栈框架被忽略......)
有人面临同样的问题吗?
我设法将一个复杂网站的行为收集到一个webarchive中。此后,我想将该webarchive转换为一组html嵌套目录。但是,当我同时使用Waf和在Apple商店购买的商业软件进行此操作时,我得到的只是嵌套目录,底部带有html页面,没有图像,也没有CSS或工作链接。如果您对webarchive文档感兴趣,请访问:
http://www.miafoto.it/it/GiroMilano.webarchive
而提取的弱乘积为:
http://www.miafoto.it/it/Giromilano/Pagine/default.aspx
以及上面的空目录。除了外观不同外,Web归档文件还显示与官方网站相同的行为-选择列表框并按下按钮时-提取的版本会通过加载自身而不是官方页面来生成不包含任何内容的页面。您可能会看到,Web归档文件超过1MB,而提取文件仅超过1 KB。
它有什么问题,我如何才能完成如此看似微不足道的业务并获得可用的结果?
谢谢,
我有这样的需求。我想阅读 .webarchive 文件。我有一个扩展名为 .webarchive 的文件,我已将该文件放入 asset 文件夹中。我想在 android webview 上读取该文件。是否可以?
我用谷歌搜索并找到了一些有用的链接。这个 git 内容确实很有帮助。它的作用是将 .webarchive 文件的提取内容放入 asset 文件夹中,然后数据显示在 webview 上。我的问题是我不想将提取的内容放入资产中。我有 .webarchive 扩展名的文件,并希望它直接在 webview 中打开。
我猜 zipInputStream 只是用于带有 zip 格式扩展名的文件名,另一件事是我读到了一些内容,其中只有 zip 文件将使用 ZipInputStram 进行提取,这些文件已使用 WinRar 软件压缩,在我的情况下,我尝试的是我有尝试使用以下方法来unizip webarchive文件http://pastie.org/8516247,这是我得到的日志
现在从这个日志中您可以看到命令甚至没有进入第 6 行的 while 循环内部,这一点可以通过以下证明:
log 11-29 13:01:46.903: V/Decompress(19936): 1
Run Code Online (Sandbox Code Playgroud)
如果我在第 4 行使用任何 zip 文件代替 test.warc,而不是在 while 循环中输入命令,则意味着此 ZipInputStream 完全忽略 .WARC 文件,不是吗?
因此,如果有人知道如何提取 .webarchive 文件或读取 .webarchive 文件而不提取它,请帮助我。
如果有人有想法请帮助我
谢谢
我想web archive在我的tomcat网络服务器上运行geoserver .我正在使用tomcat 8.
我web archive从geoserver下载GeoServer 2.7.1.1 .当我想部署war文件时,出现错误如下:

但是当我部署另一个war应用程序时,它正确部署.
哪里有问题?
我已将 GitHub 上的 readme.md 文件作为 webarchive 文件保存在 Google 驱动器中。我本来打算分享给其他人。上传后打不开。说没有可用的预览。我也没有看到任何连接的应用程序。有什么建议。
我有一个WebView,我想保存为WebArchive.我只想保存HTML部分而不是参考图像.当我执行以下操作时,它似乎创建了一个WebArchive,其中也嵌入了图像.
[[[[[sourceSignatureWebView mainFrame] dataSource] webArchive] data]
writeToFile:@"MyWebarchive.webarchive" atomically:YES];
Run Code Online (Sandbox Code Playgroud)
除了我不想嵌入图像这一事实外,Safari似乎无法显示文件,并且在我想要的HTML部分周围显示了很多二进制乱码.我知道我可以使用textutil来创建文件,但如果可能的话,我想在Cocoa中完成所有这些操作.
有谁知道这是否可行?任何想法将不胜感激.谢谢!