http://www.microsoft.com/china/MSDN/library/data/xml/mis0303XMLFiles.mspx
看完后,大受启发。
说起来真惭愧,以前合并XML文档都是通过读取源XML文档的innerXML,然后与目标XML文档的innerXML组合,没想到还有这么好的方法:
1、通过XmlNode的ImportNode方法,不过ImportNode只是在文档之间传输对象的控制,因此还需要调用AppendNode方法,或者其它的Node的插入方式来把Node添加到目的文档中。不过这样可以控制到Node,对于只需要合并特定的Node的过程有较好的控制能力。
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2、通过XmlReader和XmlWriter。一个XmlWriter负责生成目的XML文档,多个XmlReader负责读入多个源XML文档。XmlWriter提供有WriteNode方法,可以把XmlReader对象写入节点。不过,从表面上看,似乎更适合整篇XML文档的合并。
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
3、XSLT。这个也是一个比较通用的方法,但是需要较复杂的XSLT指令来达到一些特定的合并目的,但是毫无疑问,相当简单。
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
对于客户端对Web服务的引用管理,以前都是在VS.NET直接引用Web服务,由于引用时,工具自动把Web服务的地址硬编码到了代码中,因此,为了防止Web服务的地址修改,就不得不手工修改代码,并引入一个XML文件专门记录Web服务的地址,现在看来,那都是“杨白劳”:-P。
原来在Web服务引用工具wsdl.exe中,有一个参数:appsettingurlkey.通过指定这个参数的值,就可以通过在应用程序配置文件中增加appSetting达到管理Web服务的目的。例如:
wsdl.exe /appsettingurlkey:EchoServiceLocation http://localhost/echoservice/echo.asmx?wsdl
那么只要在配置文件中增加:<configuration>
<appSettings>
<add key="EchoServiceLocation"
value="http://localhost/echoservice/echo.asmx" />
</appSettings>
</configuration>
就可以了。不需要而外的修改代码,也不需要增加新的配置文件。
这篇文章还讲了如何通过UDDI管理Web服务引用,通过Post和Get方式,以及JavaScript调用Web服务。