使用属性直接访问和编辑 xml 节点
El Padrino 展示了一个解决方案:
,其中一个 xml 元素可以直接加载(没有每个..)、编辑和保存!
我的xml是:
<?xml version="1.0" encoding="ISO-8859-8"?>
<g>
<page no="1" href="page1.xml" title="נושא 1">
<row>
<pic pos="1" src="D:\RuthSiteFiles\webSiteGalleryClone\ruthCompPics\C_WebBigPictures\100CANON\IMG_0418.jpg" width="150" height="120">1</pic>
</row>
</page>
</g>
并且我需要通过两个属性(1.页面标签中的“no”和pic标签中的“pos”)选择一个节点,
我发现: 如何访问具有属性的 xml 节点和使用 selectsinglenode() 的命名空间
,其中可以直接访问,但除了我不理解解决方案这一事实之外,我认为它使用无法修改和保存更改的 xpath 对象。
直接访问 xml 节点的最佳方法是什么
- (我负责该节点将是唯一的)
- 编辑该节点
- 将更改保存到 xml
谢谢 阿萨夫
El Padrino showed a solution:
where an xml element can be loaded directly (no for each..), edited and saved!
My xml is:
<?xml version="1.0" encoding="ISO-8859-8"?>
<g>
<page no="1" href="page1.xml" title="נושא 1">
<row>
<pic pos="1" src="D:\RuthSiteFiles\webSiteGalleryClone\ruthCompPics\C_WebBigPictures\100CANON\IMG_0418.jpg" width="150" height="120">1</pic>
</row>
</page>
</g>
and I need to select a node by two attributes(1. "no" in the page tag and "pos" in the pic tag)
I've found :
How to access a xml node with attributes and namespace using selectsinglenode()
where direct access is possible but beside the fact that I dont understand the solution, I think it uses the xpath object which can't be modified and save changes.
What's the best way to
- access directly an xml node (I'm responsible that the node will be unique)
- edit that node
- save changes to the xml
Thanks
Asaf
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用与链接到的第一个答案相同的模式,但您需要在 XPath 中包含属性的条件。您的基本 XPath 为
g/page/row/pic
。由于您希望page
的no
属性为1
,因此您添加[@no='1']
作为page
上的谓词。因此,完整的 XPath 查询类似于g/page[@no='1']/row/pic[@pos='1']
。 SelectSingleNode 将返回一个可变的 XmlNode 对象,因此您可以修改该对象并保存原始文档以保存更改。将 XPath 与 El Padrino 的答案放在一起:
You can use the same pattern as the first answer you linked to, but you will need to include the conditions on the attributes in the XPath. Your basic XPath would be
g/page/row/pic
. Since you want theno
attribute ofpage
to be1
, you add[@no='1']
as a predicate onpage
. So, the full XPath query is something likeg/page[@no='1']/row/pic[@pos='1']
. SelectSingleNode will return a mutable XmlNode object, so you can modify that object and save the original document to save changes.Putting the XPath together with El Padrino's answer:
使用精心设计的新
XDocument
/XElement
而不是旧的XmlDocument
API。在你的例子中,
Use the new, well-designed
XDocument
/XElement
instead of the oldXmlDocument
API.In your example,