- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在努力处理一个合理的逻辑循环,以便从一个太大而无法与支持 .NET 类的 XPath 一起使用的 XML 文件中剥离节点。
我正在尝试用执行相同但使用 XmTextReader 的代码替换我拥有的单行代码(使用 XPath 查询字符串调用 SelectNodes)。
如之前使用的 XPath 查询(仅供引用)所示,我必须向下几个级别:
ConfigurationRelease/Profiles/Profile[Name='MyProfileName']/Screens/Screen[Id='MyScreenId']/Settings/Setting[Name='MySettingName']
我认为这会很烦人但很简单。但是,我似乎无法正确使用循环。
我需要获取一个节点,检查该节点下的一个节点以查看该值是否与目标字符串匹配,如果匹配则继续往下走,如果不匹配则跳过该分支。
事实上,我认为我的问题是如果我不感兴趣的话我不知道如何忽略一个分支。我不允许它走不相关的分支,因为元素名称不是唯一的(如 XPath 查询所示)。
我以为我可以维护一些 bool 值,例如bool expectingProfileName 在我点击 Profile 节点时设置为 true。但是,如果它不是我想要的特定配置文件节点,我将无法退出该分支。
所以......希望这对某人有意义......我已经盯着这个问题看了几个小时,可能只是遗漏了一些明显的东西......
我想发布文件的一部分,但无法弄清楚结构大致是这样的:
ConfigRelease > Profiles > Profile > Name > Screens > Screen > Settings > Setting > Name
我会知道 ProfileName、ScreenName 和 SettingName,我需要设置节点。
我试图避免一次性读取整个文件,例如在应用程序启动时,因为其中一半的内容永远不会被使用。我也无法控制生成 xml 文件的内容,因此无法将其更改为生成多个较小的文件。
任何提示将不胜感激。
更新
我已经重新打开了这个。海报建议 XPathDocument 应该是完美的。不幸的是,我没有提到这是一个移动应用程序并且不支持 XPathDocument。
按照大多数标准,该文件并不大,这就是系统最初编码为使用 XmlDocument 的原因。它目前是 4MB,显然大到足以在将移动应用程序加载到 XmlDocument 中时使它崩溃。它可能与现在出现的一样好,因为文件预计会变得更大。不管怎样,我现在正在尝试数据集建议,但我仍然对其他想法持开放态度。
更新 2
我很怀疑,因为很多人都说他们不希望这么大的文件导致系统崩溃。进一步的实验表明,这是间歇性崩溃。昨天它每次都崩溃但是今天早上我重置设备后,我无法重现它。我现在正试图找出一套可靠的繁殖步骤。并确定处理问题的最佳方法,我确定该问题仍然存在。我不能只留下它,因为如果应用程序无法访问此文件,它就没用了,而且我不认为可以告诉我的用户当我的应用程序运行时他们不能在他们的设备上运行任何其他东西...... ....
最佳答案
看看<a href="http://msdn.microsoft.com/en-us/library/system.xml.xpath.xpathdocument.aspx" rel="noreferrer noopener nofollow">XPathDocument</a>
.
XPathDocument 比 XmlDocument 更轻量,并且针对只读 XPath 查询进行了优化。
关于c# - 大型 XML 文件,XmlDocument 不可行但需要能够搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/557527/
我正在使用 Java 编写一个时钟程序,该程序能够“滴答作响”,但它存在问题。我认为它与 getter 和 setter 或 toString() 方法有关。 计数器类 package clock;
const Index = () => { // Ref Links const frefLinks = { 1: useRef(1), 2: useRef(2), 3: useRef(3
所以我读了here不能 pickle 装饰函数。确实: import multiprocessing as mp def deco(f): def wrapper(*args, **kwarg
我在go1.11.2 linux/amd64 版本。当包godog使用 go get github.com/DATA-DOG/godog/ 安装,godog 可执行文件在 $GOPATH/bin/中创
如何正确压缩字符串,以便 PHP 能够解压缩? 我试过这个: public static byte[] compress(String string) throws IOException {
我们这里的问题是表明 在测试中使用 Kleene 代数。 在 b 的值由 p 保留的情况下,我们有交换条件 bp = pb;两个程序之间的等价性简化为等式 在 b 的值不被 p 保留的情况下,我们有交
我有一个与我的网络相关的非常奇怪的问题,我在具有多个接口(interface)的 VirtualBox 上安装了 RDO Grizzly OpenStack。 虚拟盒子: eth0 - managem
我正在尝试使用 Passport.js授权谷歌OAuth2在 Node.js .我整个星期都在尝试让它工作,但不知道为什么它不工作,所以现在我求助于 stack 寻求一些潜在的帮助。我已经尝试了所有在
我是一名优秀的程序员,十分优秀!