XML:如何将一个文件读入另一个文件
我有一个文件:A.xml包含这样的东西:
在headernode内部,我需要能够动态加载另一个名为B.xml的xml文件的内容,其中包含以下内容
0
我的问题是如何在a.xml的头节点中获取B.xml的内容?
谢谢!
这似乎有效:
var header = XDocument.Load("a.xml"); var token = XElement.Load("b.xml"); var headerNode = header.Elements("headernode").First(); headerNode.Add(token); Console.WriteLine(header.ToString()); /* The above prints: 0 */
如果你可以使用Linq to XML,这将相对简单:
XDocument doc1 = XDocument.Load("a.xml"); XDocument doc2 = XDocument.Load("b.xml"); doc1.Element("headernode").Add(doc2.Root);
我更喜欢其他一些答案,但这是我想到的第一件事:
var a = new XmlDocument(); a.Load("c:\\a.xml"); var b = new XmlDocument(); b.Load("c:\\b.xml"); var node = a.SelectSingleNode("/headernode"); node.AppendChild(a.ImportNode(b.SelectSingleNode("/token"), true)); a.Save("c:\\c.xml");
这个XQuery:
declare function local:copy-append($element as element()) { if ($element instance of element(headernode)) then element headernode {$element/@*,doc('B.xml')} else element {node-name($element)} {$element/@*, for $child in $element/node() return if ($child instance of element()) then local:copy-append($child) else $child } }; local:copy-append(/*)
输出:
0
好吧,我不知道在C-Sharp中这样做的确切方法,但基本上不是默认方法
- 加载A.xml的DOM
- 找到headernode
- 将B.xml加载到DOM中
- 为B解析DOM的根
- 从DOM B复制root
- 把它作为孩子到位于DOM A的headernode
- 将修改后的DOM A重写为文件还是您想要的?
由于我是Java开发人员,我对C-Sharp XML API不太熟悉,但基本上我在那里看过XMLDocument和XDocument。 当我没有错的时候,XDocument更新更简单,但两者都应该以某种方式做到。
这有帮助吗?
//myXmlToInsert.xml /* 0 */ //code XDocument xmlDoc = new XDocument(); xmlDoc.Declaration = new XDeclaration("1.0", "utf-8", "yes"); xmlDoc.Document.Add(new XElement("rootNode",new XElement("headerNode"), new XElement("bodyNode"))); XDocument xmlToInsert = XDocument.Load(@"c:\myXmlToInsert.xml"); XElement tokenNode = xmlToInsert.Root.Element("token"); xmlDoc.Root.Element("headerNode").Add(tokenNode); //Result /* 0 */
- DataGridView.CellValueChanged没有在绑定的DataGridView上触发
- 反序列化为double时,JsonConvert会抛出一个“非有效整数”exception
- 克隆具有更好的性能
- 允许用户传递表名和列名,同时防止SQL注入
- 如何修复TcpClient Ip Header Bad Checksum
- Visual Studio 2015诊断工具不再有效
- Visual Studio 2010生成错误 – 来自HRESULT的exception:0x800300FA(STG_E_ABNORMALAPIEXIT))
- 如何更改枚举定义而不影响在C#中使用它的客户端
- 检查字符串之间是否有空格(或任何地方)