- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我一直在尝试使用 Scala 和 XML,我发现使用 XML.load(或 loadString)创建的 XML 标记与将其写为文字之间在行为上存在奇怪的差异。这是代码:
import scala.xml._
// creating a classical link HTML tag
val in_xml = <link type="text/css" href="/css/main.css" rel="stylesheet" xmlns="http://www.w3.org/1999/xhtml"></link>
// The same as a String
val in_str = """<link type="text/css" href="/css/main.css" rel="stylesheet" xmlns="http://www.w3.org/1999/xhtml"></link>"""
// Convert the String into XML
val from_str = XML.loadString(in_str)
println("in_xml : " + in_xml)
println("from_str: "+ from_str)
println("val_xml == from_str: "+ (in_xml == from_str))
println("in_xml.getClass() == from_str.getClass(): " +
(in_xml.getClass() == from_str.getClass()))
在这里,输出:
in_xml : <link href="/css/main.css" rel="stylesheet" type="text/css" xmlns="http://www.w3.org/1999/xhtml"></link>
from_str: <link rel="stylesheet" href="/css/main.css" type="text/css" xmlns="http://www.w3.org/1999/xhtml"></link>
val_xml == from_str: false
in_xml.getClass() == from_str.getClass(): true
类型相同。但是没有平等。属性的顺序发生变化。它与原来的永远不一样。垃圾的属性按字母顺序排序(只有危险?)。
如果在我尝试转换它们时两种解决方案的行为没有不同,这就不是问题。我从 Daniel C. Sobral 在 How to change attribute on Scala XML Element 处获得了一些有趣的代码并编写了我自己的规则以删除“href”属性的第一个斜杠。 RuleTransformer 适用于 in_xml,但对 from_str 没有影响!
不幸的是,我的大部分程序都必须通过 XML.load(...) 读取 XML。所以,我卡住了。有人知道这个话题吗?
最好的问候,
亨利
最佳答案
据我所知,in_xml
和from_str
不相等,因为属性的顺序不同。这是不幸的,并且由于编译器创建 XML 的方式。这导致属性不同:
scala> in_xml.attributes == from_str.attributes
res30: Boolean = false
您可以看到,如果您替换属性,比较将起作用:
scala> in_xml.copy(attributes=from_str.attributes) == from_str
res32: Boolean = true
话虽如此,我不清楚为什么这会在替换 href
属性的代码中导致不同的行为。事实上,我怀疑属性映射的工作方式有问题。例如,如果我将 in_str
替换为:
val in_str = """<link type="text/css" rel="stylesheet" href="/css/main.css"
xmlns="http://www.w3.org/1999/xhtml"></link>"""
它工作正常。难道大牛的属性代码只有当属性在MetaData
的头部位置时才有效?
旁注:除非 in_xml
为 null
,否则 equals
和 ==
将返回相同的值。 ==
版本将在调用 equals
之前检查第一个操作数是否为空。
关于xml - Scala XML.loadString 与文字表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4401702/
标题够明确,我想让用户选择他想要打开的文本文件。 我不知道是否已经在处理中实现了资源管理器或输入字段。 任何帮助都会很棒。 最佳答案 使用 selectInput .从处理引用: Opens a pl
我是 C++ 的新手,需要一些帮助。我创建了一个包含字符串的纯资源 dll,我需要在不同的项目中使用这个 dll 来读取存储的字符串。 我编写了以下函数来读取字符串: LPTSTR GetResour
我希望能够以编程方式修改应用程序的语言,或者至少使用在控制面板 -> 区域和语言选项 -> 格式中指定的语言。 如果我添加一个英语字符串表,制作一份法语和德语拷贝,然后删除英语,我可以通过编程方式在加
我的项目是这样设置的,所以所有的框架代码和模块都被编译成一个静态的.lib(我们称之为framework.lib),许多测试项目使用framework.lib并编译成可执行文件文件。 对于错误处理,我
我正在实现一个多线程应用程序,它从使用 MFC 编写的遗留应用程序中调用模块。 当我只使用一个线程运行它时,我的代码运行完美,但如果我使用多个线程运行它,当 CString::LoadString()
MS Visual Studio 2015 企业版; C++。 在我的控制台项目中,我添加了 RC 文件(即资源)并向其中添加了两个字符串: 我写了这样的函数来获取字符串: PCTSTR LoadSt
当我在命名空间中使用 LoadString WinAPI 宏时,我遇到了问题。我的功能: namespace Bushman { // Get the string from the reso
我想听听您对 LoadString Win32 函数包装器的看法。 int LoadWString( HINSTANCE hInstance_In, UINT uID_In, std::wstring
复制代码 代码如下: do local errorInfo = loadfile("test.lua"); --load code file i
1.loadfile只编译,不运行 loadfile(filename, mode, env) 用于加载一个指定路径filename的代码块,参数如下: 基本和load等同,区别是用来加载一个文件的代
我正在尝试测试 Lua loadstring 函数。 此示例是从 Lua 文档中获取指导的: f = loadstring("i = i + 1") 但是,当我尝试在以下位置运行它时: https
loadstring() 和 loadfile() Lua 函数允许在运行时加载远程库和模块。如本文所示,它非常简单:How Do I Load Lua Module as a String Inst
Windows 中定义的 LoadString 函数可用于从 dll 或 exe 等资源加载字符串。 Linux 中的 LoadString 等效函数是什么? 最佳答案 正如评论中所指出的,没有单一的
我有一些 Lua 代码,这似乎是试图通过隐藏来保护代码。我对loadstring()函数的理解是由Lua源代码文本组成的文本字符串,然后通过loadstring()方法转换为可执行的Lua代码。 通过
我正在尝试从我正在处理的 DLL 文件中的 Strin 表加载一个字符串。这是应该将字符串加载到 std::wstring 中的函数(因为我的项目使用 Unicode 字符集)。 void Error
我一直在尝试使用有前途的 p5.js 库制作一个简单的 Web 应用程序,但我陷入困境,不知道如何继续前进。为什么以下几行不起作用对我来说确实是个谜。我只是想加载一个简单的文本文件,但不能。它一直说它
我有一个静态链接的 MFC 应用程序,我正在尝试对其进行本地化。为方便起见,我希望所有字符串都来自 XML 文件。我已经为我的应用程序的其余部分设置了它。但是,MFC 会在内部从字符串资源中检索一些字
我一直在尝试使用 Scala 和 XML,我发现使用 XML.load(或 loadString)创建的 XML 标记与将其写为文字之间在行为上存在奇怪的差异。这是代码: import scala.x
另一个问题( String to Table in Lua )询问如何将格式化为表格的字符串转换为字符串,给出的答案是使用 loadstring 或 load 将字符串转换为 block 然后执行。
在我的 flutter 代码中,我有这样做的逻辑: final jsonString = await rootBundle.loadString('AssetManifest.json'); 我有测试
我是一名优秀的程序员,十分优秀!