Comments (13)
The parser only looks for specific attributes and ignores all others, so it shouldn't be bothered by namespaces. Maybe xml-conduit requires some additional setup to handle this kind of document.
Can you make a minimal spec that makes the parser fail with namespaces? A fix would be even better, but I'll look into it when I have time.
from haskell-dbus.
Hey rblaze, I work with tsirakisn. A spec trimmed down and "examplified" from the code we're working with is described below, borrowing from telepathy for enum
:
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/">
<tp:enum name="EX_ENUM" type="s">
<tp:enumvalue suffix="EX1" value="ex1"/>
</tp:enum>
<interface name="my.example.interface">
<method name="cool_method">
<arg type="s" name="argin" direction="in"/>
</method>
</interface>
</node>
putting this through parseXML
fails. Dropping the enum
block, and thus leaving only basic interface
, method
, and arg
tags will allow parseXML
to succeed.
Thanks for your time in looking at this.
from haskell-dbus.
It has nothing to do with namespaces, at least in the test case.
Here the parser expects that node's child is either a child node or interface definition. enum
is neither, so parsing fails.
Could you try replacing X.many
with X.many'
and see if it works for you?
from haskell-dbus.
@rblaze appreciate the quick turnaround! I gave that change a try and it does indeed parse test document above but still fails to parse my files. Going to dig into this a bit and report back. Thanks again.
from haskell-dbus.
Okay, after replacing a few more X.many's with the alternative, my files are parsing. I was initially concerned that ignoring the tags would introduce undesired behavior, but it seems that my binaries are behaving correctly somehow. I think those results are good enough to close this issue, at least for my purposes. Thanks for your help!
from haskell-dbus.
I can patch the parser to make it skip over unknown elements if you send me the full XML file. It already skips unknown attributes and can skip unknown nodes as well.
Just to point out, the Introspection module is not required to operate the library. It is a codegen to produce a service stub. You can write one yourself and save the trouble.
from haskell-dbus.
I can patch the parser to make it skip over unknown elements if you send me the full XML file
I have it patched on my end, which is good enough for my purposes. Whether you decide to add formal support is up to you.
Just to point out, the Introspection module is not required to operate the library. It is a codegen to produce a service stub. You can write one yourself and save the trouble.
Ack, good to know
from haskell-dbus.
I'm closing this issue for now. Feel free to send a pull request if you want this fixed on my side.
from haskell-dbus.
@rblaze I can submit it if you'd like the fix to be mainlined. I didn't think you'd want it to be.
from haskell-dbus.
Why not? It is possible other people will run into the same problem.
from haskell-dbus.
Could you also add a test case covering your changes? It will prevent breakages in the future, given this code path won't be widely used.
from haskell-dbus.
Agreed, I just didn't know if this change in particular was the route you wanted to go for a formal fix (and I am definitely no Haskell expert). I have no problem submitting with a test case
from haskell-dbus.
Related Issues (20)
- Package revisions HOT 3
- dbus depends on deprecated version of xml-conduit HOT 3
- Build error with ghc-8.10.1 HOT 10
- Auth failure on FreeBSD HOT 6
- dbus doesn't build with clang on OpenBSD HOT 3
- Handle missing DBUS_SESSION_BUS_ADDRESS HOT 7
- Remove // in the example? HOT 3
- matchAll instead of matchAny HOT 1
- Writing services? HOT 7
- Converting signal body to string? HOT 2
- Test failure with network 3.1.2.0 HOT 3
- Loosen bounds on Hackage HOT 2
- Build failures in dbus 1.0.0 to 1.2.2 with GHC 9.0.1 HOT 2
- Fails to compile with GHC 9.2.1
- `dbus` 1.2.23 no longer supports GHC 8 HOT 5
- Support for older GHCs HOT 1
- Feature Request: expose the dbus unique client name HOT 3
- Dependency bounds are too restrictive for ghc 9.6 HOT 1
- Feature Request: unix socket file descriptor support HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from haskell-dbus.